auser-poolparty 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION.yml +1 -1
- data/examples/monitored_cloud.rb +1 -1
- data/examples/thrift/thrift_example.rb +1 -1
- data/lib/proto/command_interface_handler.rb +1 -1
- data/vendor/gems/thrift/CHANGES +35 -0
- data/vendor/gems/thrift/CONTRIBUTORS +77 -0
- data/vendor/gems/thrift/DISCLAIMER +6 -0
- data/vendor/gems/thrift/LICENSE +202 -0
- data/vendor/gems/thrift/Makefile.am +28 -0
- data/vendor/gems/thrift/NEWS +79 -0
- data/vendor/gems/thrift/NOTICE +26 -0
- data/vendor/gems/thrift/README +137 -0
- data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +198 -0
- data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +107 -0
- data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +194 -0
- data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +173 -0
- data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +127 -0
- data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +39 -0
- data/vendor/gems/thrift/bootstrap.sh +35 -0
- data/vendor/gems/thrift/cleanup.sh +58 -0
- data/vendor/gems/thrift/compiler/cpp/Makefile.am +136 -0
- data/vendor/gems/thrift/compiler/cpp/README +39 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +2331 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +3003 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +1700 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +932 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +173 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +321 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +1445 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +637 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +3069 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +1673 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +77 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +1812 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +2281 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +2310 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +1114 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +1071 -0
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +354 -0
- data/vendor/gems/thrift/compiler/cpp/src/globals.h +117 -0
- data/vendor/gems/thrift/compiler/cpp/src/main.cc +1207 -0
- data/vendor/gems/thrift/compiler/cpp/src/main.h +103 -0
- data/vendor/gems/thrift/compiler/cpp/src/md5.c +381 -0
- data/vendor/gems/thrift/compiler/cpp/src/md5.h +91 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +137 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +59 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +121 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +56 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +51 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +59 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +64 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +150 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +93 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +56 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +64 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +223 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +86 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +68 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +55 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +127 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +176 -0
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +70 -0
- data/vendor/gems/thrift/compiler/cpp/src/platform.h +36 -0
- data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +303 -0
- data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +1140 -0
- data/vendor/gems/thrift/configure.ac +255 -0
- data/vendor/gems/thrift/contrib/fb303/LICENSE +16 -0
- data/vendor/gems/thrift/contrib/fb303/Makefile.am +31 -0
- data/vendor/gems/thrift/contrib/fb303/README +37 -0
- data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +258 -0
- data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +198 -0
- data/vendor/gems/thrift/contrib/fb303/bootstrap.sh +26 -0
- data/vendor/gems/thrift/contrib/fb303/configure.ac +115 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +124 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +103 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +84 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +481 -0
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +215 -0
- data/vendor/gems/thrift/contrib/fb303/global_footer.mk +21 -0
- data/vendor/gems/thrift/contrib/fb303/global_header.mk +38 -0
- data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +112 -0
- data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +103 -0
- data/vendor/gems/thrift/contrib/fb303/java/build.xml +84 -0
- data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +89 -0
- data/vendor/gems/thrift/contrib/fb303/py/Makefile.am +44 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +82 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/__init__.py +20 -0
- data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +195 -0
- data/vendor/gems/thrift/contrib/fb303/py/setup.py +27 -0
- data/vendor/gems/thrift/contrib/thrift.el +126 -0
- data/vendor/gems/thrift/contrib/thrift.spec +206 -0
- data/vendor/gems/thrift/contrib/thrift.vim +91 -0
- data/vendor/gems/thrift/contrib/thrift_dump.cpp +91 -0
- data/vendor/gems/thrift/doc/lgpl-2.1.txt +504 -0
- data/vendor/gems/thrift/doc/otp-base-license.txt +20 -0
- data/vendor/gems/thrift/doc/thrift.bnf +96 -0
- data/vendor/gems/thrift/doc/thrift.tex +1057 -0
- data/vendor/gems/thrift/lib/Makefile.am +55 -0
- data/vendor/gems/thrift/lib/cocoa/README +21 -0
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +44 -0
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +130 -0
- data/vendor/gems/thrift/lib/cocoa/src/TException.h +34 -0
- data/vendor/gems/thrift/lib/cocoa/src/TException.m +64 -0
- data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +27 -0
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +27 -0
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +51 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +51 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +477 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +148 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.h +25 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.m +23 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +29 -0
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +104 -0
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +50 -0
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +153 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +42 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +159 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +35 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +91 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +38 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +89 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +32 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +58 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +36 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +30 -0
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +43 -0
- data/vendor/gems/thrift/lib/cpp/Makefile.am +158 -0
- data/vendor/gems/thrift/lib/cpp/README +67 -0
- data/vendor/gems/thrift/lib/cpp/src/TLogging.h +163 -0
- data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +53 -0
- data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +96 -0
- data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +148 -0
- data/vendor/gems/thrift/lib/cpp/src/Thrift.h +191 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +60 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +77 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +137 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +84 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +160 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +114 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +314 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +130 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +125 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +493 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +169 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +284 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +122 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +55 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +100 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +155 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +354 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +379 -0
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +155 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +122 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +77 -0
- data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +264 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +79 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +42 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +394 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +254 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +736 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +279 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +346 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +225 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +762 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +253 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +998 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +340 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +304 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +438 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +104 -0
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +187 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +750 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +435 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +38 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +213 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +118 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +70 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +217 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +79 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +243 -0
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +74 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +370 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +667 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +77 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +73 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +953 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +442 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +348 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +111 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +368 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +76 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +92 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +96 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +54 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +41 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +591 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +242 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +235 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +191 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +224 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +31 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +117 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +178 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +287 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +299 -0
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +219 -0
- data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +30 -0
- data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +30 -0
- data/vendor/gems/thrift/lib/cpp/thrift.pc.in +29 -0
- data/vendor/gems/thrift/lib/csharp/Makefile.am +70 -0
- data/vendor/gems/thrift/lib/csharp/README +26 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +55 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +242 -0
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +62 -0
- data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +142 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +34 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +392 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +50 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +58 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessageType.cs +31 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +87 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +61 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +29 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +94 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +50 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +42 -0
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +40 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +135 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +148 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +186 -0
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +234 -0
- data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +131 -0
- data/vendor/gems/thrift/lib/csharp/src/TProcessor.cs +29 -0
- data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +73 -0
- data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +35 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +100 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +157 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +39 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +144 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +103 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +66 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +64 -0
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +38 -0
- data/vendor/gems/thrift/lib/erl/Makefile +37 -0
- data/vendor/gems/thrift/lib/erl/README +56 -0
- data/vendor/gems/thrift/lib/erl/build/beamver +59 -0
- data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +15 -0
- data/vendor/gems/thrift/lib/erl/build/colors.mk +24 -0
- data/vendor/gems/thrift/lib/erl/build/docs.mk +12 -0
- data/vendor/gems/thrift/lib/erl/build/mime.types +98 -0
- data/vendor/gems/thrift/lib/erl/build/otp.mk +146 -0
- data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +85 -0
- data/vendor/gems/thrift/lib/erl/build/raw_test.mk +29 -0
- data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +54 -0
- data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +31 -0
- data/vendor/gems/thrift/lib/erl/src/Makefile +116 -0
- data/vendor/gems/thrift/lib/erl/src/test_handler.erl +26 -0
- data/vendor/gems/thrift/lib/erl/src/test_service.erl +29 -0
- data/vendor/gems/thrift/lib/erl/src/thrift.app.src +44 -0
- data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +1 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +64 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +325 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +180 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +384 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +118 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +87 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +208 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +199 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +164 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +188 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +356 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +183 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +25 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +249 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +119 -0
- data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +57 -0
- data/vendor/gems/thrift/lib/erl/vsn.mk +1 -0
- data/vendor/gems/thrift/lib/hs/README +82 -0
- data/vendor/gems/thrift/lib/hs/Setup.lhs +23 -0
- data/vendor/gems/thrift/lib/hs/TODO +2 -0
- data/vendor/gems/thrift/lib/hs/Thrift.cabal +20 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift.hs +111 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +191 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +147 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +65 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +60 -0
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +58 -0
- data/vendor/gems/thrift/lib/java/Makefile.am +38 -0
- data/vendor/gems/thrift/lib/java/README +43 -0
- data/vendor/gems/thrift/lib/java/build.xml +195 -0
- data/vendor/gems/thrift/lib/java/ivy.xml +8 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +171 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +123 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +66 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +102 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +46 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +94 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +45 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +30 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +32 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +39 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +110 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +69 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +42 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +29 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +29 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +128 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +331 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +741 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +48 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +927 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +38 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +40 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +48 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +146 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +81 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +30 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +158 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +42 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +384 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +36 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +40 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +304 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +772 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +126 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +145 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +271 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +126 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +157 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +159 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +98 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +160 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +213 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +31 -0
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +145 -0
- metadata +348 -37
- data/vendor/gems/trollop/FAQ.txt +0 -35
- data/vendor/gems/trollop/History.txt +0 -84
- data/vendor/gems/trollop/Manifest.txt +0 -7
- data/vendor/gems/trollop/README.txt +0 -38
- data/vendor/gems/trollop/Rakefile +0 -36
- data/vendor/gems/trollop/lib/trollop.rb +0 -695
- data/vendor/gems/trollop/release-script.txt +0 -13
- data/vendor/gems/trollop/test/test_trollop.rb +0 -957
- data/vendor/gems/trollop/www/index.html +0 -167
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3
|
+
* or more contributor license agreements. See the NOTICE file
|
|
4
|
+
* distributed with this work for additional information
|
|
5
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
6
|
+
* to you under the Apache License, Version 2.0 (the
|
|
7
|
+
* "License"); you may not use this file except in compliance
|
|
8
|
+
* with the License. You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing,
|
|
13
|
+
* software distributed under the License is distributed on an
|
|
14
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
15
|
+
* KIND, either express or implied. See the License for the
|
|
16
|
+
* specific language governing permissions and limitations
|
|
17
|
+
* under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
#ifndef _THRIFT_TRANSPORT_THTTPCLIENT_H_
|
|
21
|
+
#define _THRIFT_TRANSPORT_THTTPCLIENT_H_ 1
|
|
22
|
+
|
|
23
|
+
#include <transport/TBufferTransports.h>
|
|
24
|
+
|
|
25
|
+
namespace apache { namespace thrift { namespace transport {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* HTTP client implementation of the thrift transport. This was irritating
|
|
29
|
+
* to write, but the alternatives in C++ land are daunting. Linking CURL
|
|
30
|
+
* requires 23 dynamic libraries last time I checked (WTF?!?). All we have
|
|
31
|
+
* here is a VERY basic HTTP/1.1 client which supports HTTP 100 Continue,
|
|
32
|
+
* chunked transfer encoding, keepalive, etc. Tested against Apache.
|
|
33
|
+
*
|
|
34
|
+
*/
|
|
35
|
+
class THttpClient : public TTransport {
|
|
36
|
+
public:
|
|
37
|
+
THttpClient(boost::shared_ptr<TTransport> transport, std::string host, std::string path="");
|
|
38
|
+
|
|
39
|
+
THttpClient(std::string host, int port, std::string path="");
|
|
40
|
+
|
|
41
|
+
virtual ~THttpClient();
|
|
42
|
+
|
|
43
|
+
void open() {
|
|
44
|
+
transport_->open();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
bool isOpen() {
|
|
48
|
+
return transport_->isOpen();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
bool peek() {
|
|
52
|
+
return transport_->peek();
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
void close() {
|
|
56
|
+
transport_->close();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
uint32_t read(uint8_t* buf, uint32_t len);
|
|
60
|
+
|
|
61
|
+
void readEnd();
|
|
62
|
+
|
|
63
|
+
void write(const uint8_t* buf, uint32_t len);
|
|
64
|
+
|
|
65
|
+
void flush();
|
|
66
|
+
|
|
67
|
+
private:
|
|
68
|
+
void init();
|
|
69
|
+
|
|
70
|
+
protected:
|
|
71
|
+
|
|
72
|
+
boost::shared_ptr<TTransport> transport_;
|
|
73
|
+
|
|
74
|
+
TMemoryBuffer writeBuffer_;
|
|
75
|
+
TMemoryBuffer readBuffer_;
|
|
76
|
+
|
|
77
|
+
std::string host_;
|
|
78
|
+
std::string path_;
|
|
79
|
+
|
|
80
|
+
bool readHeaders_;
|
|
81
|
+
bool chunked_;
|
|
82
|
+
bool chunkedDone_;
|
|
83
|
+
uint32_t chunkSize_;
|
|
84
|
+
uint32_t contentLength_;
|
|
85
|
+
|
|
86
|
+
char* httpBuf_;
|
|
87
|
+
uint32_t httpPos_;
|
|
88
|
+
uint32_t httpBufLen_;
|
|
89
|
+
uint32_t httpBufSize_;
|
|
90
|
+
|
|
91
|
+
uint32_t readMoreData();
|
|
92
|
+
char* readLine();
|
|
93
|
+
|
|
94
|
+
void readHeaders();
|
|
95
|
+
void parseHeader(char* header);
|
|
96
|
+
bool parseStatusLine(char* status);
|
|
97
|
+
|
|
98
|
+
uint32_t readChunked();
|
|
99
|
+
void readChunkedFooters();
|
|
100
|
+
uint32_t parseChunkSize(char* line);
|
|
101
|
+
|
|
102
|
+
uint32_t readContent(uint32_t size);
|
|
103
|
+
|
|
104
|
+
void refill();
|
|
105
|
+
void shift();
|
|
106
|
+
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
}}} // apache::thrift::transport
|
|
110
|
+
|
|
111
|
+
#endif // #ifndef _THRIFT_TRANSPORT_THTTPCLIENT_H_
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Licensed to the Apache Software Foundation (ASF) under one
|
|
3
|
+
* or more contributor license agreements. See the NOTICE file
|
|
4
|
+
* distributed with this work for additional information
|
|
5
|
+
* regarding copyright ownership. The ASF licenses this file
|
|
6
|
+
* to you under the Apache License, Version 2.0 (the
|
|
7
|
+
* "License"); you may not use this file except in compliance
|
|
8
|
+
* with the License. You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing,
|
|
13
|
+
* software distributed under the License is distributed on an
|
|
14
|
+
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
15
|
+
* KIND, either express or implied. See the License for the
|
|
16
|
+
* specific language governing permissions and limitations
|
|
17
|
+
* under the License.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
#include <cstring>
|
|
21
|
+
#include <sys/types.h>
|
|
22
|
+
#include <sys/socket.h>
|
|
23
|
+
#include <sys/poll.h>
|
|
24
|
+
#include <sys/types.h>
|
|
25
|
+
#include <netinet/in.h>
|
|
26
|
+
#include <netinet/tcp.h>
|
|
27
|
+
#include <netdb.h>
|
|
28
|
+
#include <fcntl.h>
|
|
29
|
+
#include <errno.h>
|
|
30
|
+
#include <unistd.h>
|
|
31
|
+
|
|
32
|
+
#include "TSocket.h"
|
|
33
|
+
#include "TServerSocket.h"
|
|
34
|
+
#include <boost/shared_ptr.hpp>
|
|
35
|
+
|
|
36
|
+
namespace apache { namespace thrift { namespace transport {
|
|
37
|
+
|
|
38
|
+
using namespace std;
|
|
39
|
+
using boost::shared_ptr;
|
|
40
|
+
|
|
41
|
+
TServerSocket::TServerSocket(int port) :
|
|
42
|
+
port_(port),
|
|
43
|
+
serverSocket_(-1),
|
|
44
|
+
acceptBacklog_(1024),
|
|
45
|
+
sendTimeout_(0),
|
|
46
|
+
recvTimeout_(0),
|
|
47
|
+
retryLimit_(0),
|
|
48
|
+
retryDelay_(0),
|
|
49
|
+
tcpSendBuffer_(0),
|
|
50
|
+
tcpRecvBuffer_(0),
|
|
51
|
+
intSock1_(-1),
|
|
52
|
+
intSock2_(-1) {}
|
|
53
|
+
|
|
54
|
+
TServerSocket::TServerSocket(int port, int sendTimeout, int recvTimeout) :
|
|
55
|
+
port_(port),
|
|
56
|
+
serverSocket_(-1),
|
|
57
|
+
acceptBacklog_(1024),
|
|
58
|
+
sendTimeout_(sendTimeout),
|
|
59
|
+
recvTimeout_(recvTimeout),
|
|
60
|
+
retryLimit_(0),
|
|
61
|
+
retryDelay_(0),
|
|
62
|
+
tcpSendBuffer_(0),
|
|
63
|
+
tcpRecvBuffer_(0),
|
|
64
|
+
intSock1_(-1),
|
|
65
|
+
intSock2_(-1) {}
|
|
66
|
+
|
|
67
|
+
TServerSocket::~TServerSocket() {
|
|
68
|
+
close();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void TServerSocket::setSendTimeout(int sendTimeout) {
|
|
72
|
+
sendTimeout_ = sendTimeout;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
void TServerSocket::setRecvTimeout(int recvTimeout) {
|
|
76
|
+
recvTimeout_ = recvTimeout;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
void TServerSocket::setRetryLimit(int retryLimit) {
|
|
80
|
+
retryLimit_ = retryLimit;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
void TServerSocket::setRetryDelay(int retryDelay) {
|
|
84
|
+
retryDelay_ = retryDelay;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
void TServerSocket::setTcpSendBuffer(int tcpSendBuffer) {
|
|
88
|
+
tcpSendBuffer_ = tcpSendBuffer;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
void TServerSocket::setTcpRecvBuffer(int tcpRecvBuffer) {
|
|
92
|
+
tcpRecvBuffer_ = tcpRecvBuffer;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void TServerSocket::listen() {
|
|
96
|
+
int sv[2];
|
|
97
|
+
if (-1 == socketpair(AF_LOCAL, SOCK_STREAM, 0, sv)) {
|
|
98
|
+
GlobalOutput.perror("TServerSocket::listen() socketpair() ", errno);
|
|
99
|
+
intSock1_ = -1;
|
|
100
|
+
intSock2_ = -1;
|
|
101
|
+
} else {
|
|
102
|
+
intSock1_ = sv[1];
|
|
103
|
+
intSock2_ = sv[0];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
struct addrinfo hints, *res, *res0;
|
|
107
|
+
int error;
|
|
108
|
+
char port[sizeof("65536") + 1];
|
|
109
|
+
std::memset(&hints, 0, sizeof(hints));
|
|
110
|
+
hints.ai_family = PF_UNSPEC;
|
|
111
|
+
hints.ai_socktype = SOCK_STREAM;
|
|
112
|
+
hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
|
|
113
|
+
sprintf(port, "%d", port_);
|
|
114
|
+
|
|
115
|
+
// Wildcard address
|
|
116
|
+
error = getaddrinfo(NULL, port, &hints, &res0);
|
|
117
|
+
if (error) {
|
|
118
|
+
GlobalOutput.printf("getaddrinfo %d: %s", error, gai_strerror(error));
|
|
119
|
+
close();
|
|
120
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not resolve host for server socket.");
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Pick the ipv6 address first since ipv4 addresses can be mapped
|
|
124
|
+
// into ipv6 space.
|
|
125
|
+
for (res = res0; res; res = res->ai_next) {
|
|
126
|
+
if (res->ai_family == AF_INET6 || res->ai_next == NULL)
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
serverSocket_ = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
|
|
131
|
+
if (serverSocket_ == -1) {
|
|
132
|
+
int errno_copy = errno;
|
|
133
|
+
GlobalOutput.perror("TServerSocket::listen() socket() ", errno_copy);
|
|
134
|
+
close();
|
|
135
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not create server socket.", errno_copy);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Set reusaddress to prevent 2MSL delay on accept
|
|
139
|
+
int one = 1;
|
|
140
|
+
if (-1 == setsockopt(serverSocket_, SOL_SOCKET, SO_REUSEADDR,
|
|
141
|
+
&one, sizeof(one))) {
|
|
142
|
+
int errno_copy = errno;
|
|
143
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() SO_REUSEADDR ", errno_copy);
|
|
144
|
+
close();
|
|
145
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set SO_REUSEADDR", errno_copy);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Set TCP buffer sizes
|
|
149
|
+
if (tcpSendBuffer_ > 0) {
|
|
150
|
+
if (-1 == setsockopt(serverSocket_, SOL_SOCKET, SO_SNDBUF,
|
|
151
|
+
&tcpSendBuffer_, sizeof(tcpSendBuffer_))) {
|
|
152
|
+
int errno_copy = errno;
|
|
153
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() SO_SNDBUF ", errno_copy);
|
|
154
|
+
close();
|
|
155
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set SO_SNDBUF", errno_copy);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (tcpRecvBuffer_ > 0) {
|
|
160
|
+
if (-1 == setsockopt(serverSocket_, SOL_SOCKET, SO_RCVBUF,
|
|
161
|
+
&tcpRecvBuffer_, sizeof(tcpRecvBuffer_))) {
|
|
162
|
+
int errno_copy = errno;
|
|
163
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() SO_RCVBUF ", errno_copy);
|
|
164
|
+
close();
|
|
165
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set SO_RCVBUF", errno_copy);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Defer accept
|
|
170
|
+
#ifdef TCP_DEFER_ACCEPT
|
|
171
|
+
if (-1 == setsockopt(serverSocket_, SOL_SOCKET, TCP_DEFER_ACCEPT,
|
|
172
|
+
&one, sizeof(one))) {
|
|
173
|
+
int errno_copy = errno;
|
|
174
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() TCP_DEFER_ACCEPT ", errno_copy);
|
|
175
|
+
close();
|
|
176
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set TCP_DEFER_ACCEPT", errno_copy);
|
|
177
|
+
}
|
|
178
|
+
#endif // #ifdef TCP_DEFER_ACCEPT
|
|
179
|
+
|
|
180
|
+
#ifdef IPV6_V6ONLY
|
|
181
|
+
int zero = 0;
|
|
182
|
+
if (-1 == setsockopt(serverSocket_, IPPROTO_IPV6, IPV6_V6ONLY,
|
|
183
|
+
&zero, sizeof(zero))) {
|
|
184
|
+
GlobalOutput.perror("TServerSocket::listen() IPV6_V6ONLY ", errno);
|
|
185
|
+
}
|
|
186
|
+
#endif // #ifdef IPV6_V6ONLY
|
|
187
|
+
|
|
188
|
+
// Turn linger off, don't want to block on calls to close
|
|
189
|
+
struct linger ling = {0, 0};
|
|
190
|
+
if (-1 == setsockopt(serverSocket_, SOL_SOCKET, SO_LINGER,
|
|
191
|
+
&ling, sizeof(ling))) {
|
|
192
|
+
int errno_copy = errno;
|
|
193
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() SO_LINGER ", errno_copy);
|
|
194
|
+
close();
|
|
195
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set SO_LINGER", errno_copy);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// TCP Nodelay, speed over bandwidth
|
|
199
|
+
if (-1 == setsockopt(serverSocket_, IPPROTO_TCP, TCP_NODELAY,
|
|
200
|
+
&one, sizeof(one))) {
|
|
201
|
+
int errno_copy = errno;
|
|
202
|
+
GlobalOutput.perror("TServerSocket::listen() setsockopt() TCP_NODELAY ", errno_copy);
|
|
203
|
+
close();
|
|
204
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not set TCP_NODELAY", errno_copy);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Set NONBLOCK on the accept socket
|
|
208
|
+
int flags = fcntl(serverSocket_, F_GETFL, 0);
|
|
209
|
+
if (flags == -1) {
|
|
210
|
+
int errno_copy = errno;
|
|
211
|
+
GlobalOutput.perror("TServerSocket::listen() fcntl() F_GETFL ", errno_copy);
|
|
212
|
+
throw TTransportException(TTransportException::NOT_OPEN, "fcntl() failed", errno_copy);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
if (-1 == fcntl(serverSocket_, F_SETFL, flags | O_NONBLOCK)) {
|
|
216
|
+
int errno_copy = errno;
|
|
217
|
+
GlobalOutput.perror("TServerSocket::listen() fcntl() O_NONBLOCK ", errno_copy);
|
|
218
|
+
throw TTransportException(TTransportException::NOT_OPEN, "fcntl() failed", errno_copy);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// prepare the port information
|
|
222
|
+
// we may want to try to bind more than once, since SO_REUSEADDR doesn't
|
|
223
|
+
// always seem to work. The client can configure the retry variables.
|
|
224
|
+
int retries = 0;
|
|
225
|
+
do {
|
|
226
|
+
if (0 == bind(serverSocket_, res->ai_addr, res->ai_addrlen)) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// use short circuit evaluation here to only sleep if we need to
|
|
231
|
+
} while ((retries++ < retryLimit_) && (sleep(retryDelay_) == 0));
|
|
232
|
+
|
|
233
|
+
// free addrinfo
|
|
234
|
+
freeaddrinfo(res0);
|
|
235
|
+
|
|
236
|
+
// throw an error if we failed to bind properly
|
|
237
|
+
if (retries > retryLimit_) {
|
|
238
|
+
char errbuf[1024];
|
|
239
|
+
sprintf(errbuf, "TServerSocket::listen() BIND %d", port_);
|
|
240
|
+
GlobalOutput(errbuf);
|
|
241
|
+
close();
|
|
242
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not bind");
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Call listen
|
|
246
|
+
if (-1 == ::listen(serverSocket_, acceptBacklog_)) {
|
|
247
|
+
int errno_copy = errno;
|
|
248
|
+
GlobalOutput.perror("TServerSocket::listen() listen() ", errno_copy);
|
|
249
|
+
close();
|
|
250
|
+
throw TTransportException(TTransportException::NOT_OPEN, "Could not listen", errno_copy);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// The socket is now listening!
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
shared_ptr<TTransport> TServerSocket::acceptImpl() {
|
|
257
|
+
if (serverSocket_ < 0) {
|
|
258
|
+
throw TTransportException(TTransportException::NOT_OPEN, "TServerSocket not listening");
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
struct pollfd fds[2];
|
|
262
|
+
|
|
263
|
+
int maxEintrs = 5;
|
|
264
|
+
int numEintrs = 0;
|
|
265
|
+
|
|
266
|
+
while (true) {
|
|
267
|
+
std::memset(fds, 0 , sizeof(fds));
|
|
268
|
+
fds[0].fd = serverSocket_;
|
|
269
|
+
fds[0].events = POLLIN;
|
|
270
|
+
if (intSock2_ >= 0) {
|
|
271
|
+
fds[1].fd = intSock2_;
|
|
272
|
+
fds[1].events = POLLIN;
|
|
273
|
+
}
|
|
274
|
+
int ret = poll(fds, 2, -1);
|
|
275
|
+
|
|
276
|
+
if (ret < 0) {
|
|
277
|
+
// error cases
|
|
278
|
+
if (errno == EINTR && (numEintrs++ < maxEintrs)) {
|
|
279
|
+
// EINTR needs to be handled manually and we can tolerate
|
|
280
|
+
// a certain number
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
int errno_copy = errno;
|
|
284
|
+
GlobalOutput.perror("TServerSocket::acceptImpl() poll() ", errno_copy);
|
|
285
|
+
throw TTransportException(TTransportException::UNKNOWN, "Unknown", errno_copy);
|
|
286
|
+
} else if (ret > 0) {
|
|
287
|
+
// Check for an interrupt signal
|
|
288
|
+
if (intSock2_ >= 0 && (fds[1].revents & POLLIN)) {
|
|
289
|
+
int8_t buf;
|
|
290
|
+
if (-1 == recv(intSock2_, &buf, sizeof(int8_t), 0)) {
|
|
291
|
+
GlobalOutput.perror("TServerSocket::acceptImpl() recv() interrupt ", errno);
|
|
292
|
+
}
|
|
293
|
+
throw TTransportException(TTransportException::INTERRUPTED);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Check for the actual server socket being ready
|
|
297
|
+
if (fds[0].revents & POLLIN) {
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
} else {
|
|
301
|
+
GlobalOutput("TServerSocket::acceptImpl() poll 0");
|
|
302
|
+
throw TTransportException(TTransportException::UNKNOWN);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
struct sockaddr_storage clientAddress;
|
|
307
|
+
int size = sizeof(clientAddress);
|
|
308
|
+
int clientSocket = ::accept(serverSocket_,
|
|
309
|
+
(struct sockaddr *) &clientAddress,
|
|
310
|
+
(socklen_t *) &size);
|
|
311
|
+
|
|
312
|
+
if (clientSocket < 0) {
|
|
313
|
+
int errno_copy = errno;
|
|
314
|
+
GlobalOutput.perror("TServerSocket::acceptImpl() ::accept() ", errno_copy);
|
|
315
|
+
throw TTransportException(TTransportException::UNKNOWN, "accept()", errno_copy);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Make sure client socket is blocking
|
|
319
|
+
int flags = fcntl(clientSocket, F_GETFL, 0);
|
|
320
|
+
if (flags == -1) {
|
|
321
|
+
int errno_copy = errno;
|
|
322
|
+
GlobalOutput.perror("TServerSocket::acceptImpl() fcntl() F_GETFL ", errno_copy);
|
|
323
|
+
throw TTransportException(TTransportException::UNKNOWN, "fcntl(F_GETFL)", errno_copy);
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
if (-1 == fcntl(clientSocket, F_SETFL, flags & ~O_NONBLOCK)) {
|
|
327
|
+
int errno_copy = errno;
|
|
328
|
+
GlobalOutput.perror("TServerSocket::acceptImpl() fcntl() F_SETFL ~O_NONBLOCK ", errno_copy);
|
|
329
|
+
throw TTransportException(TTransportException::UNKNOWN, "fcntl(F_SETFL)", errno_copy);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
shared_ptr<TSocket> client(new TSocket(clientSocket));
|
|
333
|
+
if (sendTimeout_ > 0) {
|
|
334
|
+
client->setSendTimeout(sendTimeout_);
|
|
335
|
+
}
|
|
336
|
+
if (recvTimeout_ > 0) {
|
|
337
|
+
client->setRecvTimeout(recvTimeout_);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
return client;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
void TServerSocket::interrupt() {
|
|
344
|
+
if (intSock1_ >= 0) {
|
|
345
|
+
int8_t byte = 0;
|
|
346
|
+
if (-1 == send(intSock1_, &byte, sizeof(int8_t), 0)) {
|
|
347
|
+
GlobalOutput.perror("TServerSocket::interrupt() send() ", errno);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
void TServerSocket::close() {
|
|
353
|
+
if (serverSocket_ >= 0) {
|
|
354
|
+
shutdown(serverSocket_, SHUT_RDWR);
|
|
355
|
+
::close(serverSocket_);
|
|
356
|
+
}
|
|
357
|
+
if (intSock1_ >= 0) {
|
|
358
|
+
::close(intSock1_);
|
|
359
|
+
}
|
|
360
|
+
if (intSock2_ >= 0) {
|
|
361
|
+
::close(intSock2_);
|
|
362
|
+
}
|
|
363
|
+
serverSocket_ = -1;
|
|
364
|
+
intSock1_ = -1;
|
|
365
|
+
intSock2_ = -1;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
}}} // apache::thrift::transport
|