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,60 @@
|
|
|
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_CONCURRENCY_EXCEPTION_H_
|
|
21
|
+
#define _THRIFT_CONCURRENCY_EXCEPTION_H_ 1
|
|
22
|
+
|
|
23
|
+
#include <exception>
|
|
24
|
+
#include <Thrift.h>
|
|
25
|
+
|
|
26
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
27
|
+
|
|
28
|
+
class NoSuchTaskException : public apache::thrift::TException {};
|
|
29
|
+
|
|
30
|
+
class UncancellableTaskException : public apache::thrift::TException {};
|
|
31
|
+
|
|
32
|
+
class InvalidArgumentException : public apache::thrift::TException {};
|
|
33
|
+
|
|
34
|
+
class IllegalStateException : public apache::thrift::TException {};
|
|
35
|
+
|
|
36
|
+
class TimedOutException : public apache::thrift::TException {
|
|
37
|
+
public:
|
|
38
|
+
TimedOutException():TException("TimedOutException"){};
|
|
39
|
+
TimedOutException(const std::string& message ) :
|
|
40
|
+
TException(message) {}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
class TooManyPendingTasksException : public apache::thrift::TException {
|
|
44
|
+
public:
|
|
45
|
+
TooManyPendingTasksException():TException("TooManyPendingTasksException"){};
|
|
46
|
+
TooManyPendingTasksException(const std::string& message ) :
|
|
47
|
+
TException(message) {}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
class SystemResourceException : public apache::thrift::TException {
|
|
51
|
+
public:
|
|
52
|
+
SystemResourceException() {}
|
|
53
|
+
|
|
54
|
+
SystemResourceException(const std::string& message) :
|
|
55
|
+
TException(message) {}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
}}} // apache::thrift::concurrency
|
|
59
|
+
|
|
60
|
+
#endif // #ifndef _THRIFT_CONCURRENCY_EXCEPTION_H_
|
|
@@ -0,0 +1,77 @@
|
|
|
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_CONCURRENCY_FUNCTION_RUNNER_H
|
|
21
|
+
#define _THRIFT_CONCURRENCY_FUNCTION_RUNNER_H 1
|
|
22
|
+
|
|
23
|
+
#include <tr1/functional>
|
|
24
|
+
#include "thrift/lib/cpp/concurrency/Thread.h"
|
|
25
|
+
|
|
26
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Convenient implementation of Runnable that will execute arbitrary callbacks.
|
|
30
|
+
* Interfaces are provided to accept both a generic 'void(void)' callback, and
|
|
31
|
+
* a 'void* (void*)' pthread_create-style callback.
|
|
32
|
+
*
|
|
33
|
+
* Example use:
|
|
34
|
+
* void* my_thread_main(void* arg);
|
|
35
|
+
* shared_ptr<ThreadFactory> factory = ...;
|
|
36
|
+
* shared_ptr<Thread> thread =
|
|
37
|
+
* factory->newThread(shared_ptr<FunctionRunner>(
|
|
38
|
+
* new FunctionRunner(my_thread_main, some_argument)));
|
|
39
|
+
* thread->start();
|
|
40
|
+
*
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
class FunctionRunner : public Runnable {
|
|
45
|
+
public:
|
|
46
|
+
// This is the type of callback 'pthread_create()' expects.
|
|
47
|
+
typedef void* (*PthreadFuncPtr)(void *arg);
|
|
48
|
+
// This a fully-generic void(void) callback for custom bindings.
|
|
49
|
+
typedef std::tr1::function<void()> VoidFunc;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Given a 'pthread_create' style callback, this FunctionRunner will
|
|
53
|
+
* execute the given callback. Note that the 'void*' return value is ignored.
|
|
54
|
+
*/
|
|
55
|
+
FunctionRunner(PthreadFuncPtr func, void* arg)
|
|
56
|
+
: func_(std::tr1::bind(func, arg))
|
|
57
|
+
{ }
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Given a generic callback, this FunctionRunner will execute it.
|
|
61
|
+
*/
|
|
62
|
+
FunctionRunner(const VoidFunc& cob)
|
|
63
|
+
: func_(cob)
|
|
64
|
+
{ }
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
void run() {
|
|
68
|
+
func_();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
private:
|
|
72
|
+
VoidFunc func_;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
}}} // apache::thrift::concurrency
|
|
76
|
+
|
|
77
|
+
#endif // #ifndef _THRIFT_CONCURRENCY_FUNCTION_RUNNER_H
|
|
@@ -0,0 +1,137 @@
|
|
|
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 "Monitor.h"
|
|
21
|
+
#include "Exception.h"
|
|
22
|
+
#include "Util.h"
|
|
23
|
+
|
|
24
|
+
#include <assert.h>
|
|
25
|
+
#include <errno.h>
|
|
26
|
+
|
|
27
|
+
#include <iostream>
|
|
28
|
+
|
|
29
|
+
#include <pthread.h>
|
|
30
|
+
|
|
31
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Monitor implementation using the POSIX pthread library
|
|
35
|
+
*
|
|
36
|
+
* @version $Id:$
|
|
37
|
+
*/
|
|
38
|
+
class Monitor::Impl {
|
|
39
|
+
|
|
40
|
+
public:
|
|
41
|
+
|
|
42
|
+
Impl() :
|
|
43
|
+
mutexInitialized_(false),
|
|
44
|
+
condInitialized_(false) {
|
|
45
|
+
|
|
46
|
+
if (pthread_mutex_init(&pthread_mutex_, NULL) == 0) {
|
|
47
|
+
mutexInitialized_ = true;
|
|
48
|
+
|
|
49
|
+
if (pthread_cond_init(&pthread_cond_, NULL) == 0) {
|
|
50
|
+
condInitialized_ = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (!mutexInitialized_ || !condInitialized_) {
|
|
55
|
+
cleanup();
|
|
56
|
+
throw SystemResourceException();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
~Impl() { cleanup(); }
|
|
61
|
+
|
|
62
|
+
void lock() const { pthread_mutex_lock(&pthread_mutex_); }
|
|
63
|
+
|
|
64
|
+
void unlock() const { pthread_mutex_unlock(&pthread_mutex_); }
|
|
65
|
+
|
|
66
|
+
void wait(int64_t timeout) const {
|
|
67
|
+
|
|
68
|
+
// XXX Need to assert that caller owns mutex
|
|
69
|
+
assert(timeout >= 0LL);
|
|
70
|
+
if (timeout == 0LL) {
|
|
71
|
+
int iret = pthread_cond_wait(&pthread_cond_, &pthread_mutex_);
|
|
72
|
+
assert(iret == 0);
|
|
73
|
+
} else {
|
|
74
|
+
struct timespec abstime;
|
|
75
|
+
int64_t now = Util::currentTime();
|
|
76
|
+
Util::toTimespec(abstime, now + timeout);
|
|
77
|
+
int result = pthread_cond_timedwait(&pthread_cond_,
|
|
78
|
+
&pthread_mutex_,
|
|
79
|
+
&abstime);
|
|
80
|
+
if (result == ETIMEDOUT) {
|
|
81
|
+
// pthread_cond_timedwait has been observed to return early on
|
|
82
|
+
// various platforms, so comment out this assert.
|
|
83
|
+
//assert(Util::currentTime() >= (now + timeout));
|
|
84
|
+
throw TimedOutException();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
void notify() {
|
|
90
|
+
// XXX Need to assert that caller owns mutex
|
|
91
|
+
int iret = pthread_cond_signal(&pthread_cond_);
|
|
92
|
+
assert(iret == 0);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void notifyAll() {
|
|
96
|
+
// XXX Need to assert that caller owns mutex
|
|
97
|
+
int iret = pthread_cond_broadcast(&pthread_cond_);
|
|
98
|
+
assert(iret == 0);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private:
|
|
102
|
+
|
|
103
|
+
void cleanup() {
|
|
104
|
+
if (mutexInitialized_) {
|
|
105
|
+
mutexInitialized_ = false;
|
|
106
|
+
int iret = pthread_mutex_destroy(&pthread_mutex_);
|
|
107
|
+
assert(iret == 0);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (condInitialized_) {
|
|
111
|
+
condInitialized_ = false;
|
|
112
|
+
int iret = pthread_cond_destroy(&pthread_cond_);
|
|
113
|
+
assert(iret == 0);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
mutable pthread_mutex_t pthread_mutex_;
|
|
118
|
+
mutable bool mutexInitialized_;
|
|
119
|
+
mutable pthread_cond_t pthread_cond_;
|
|
120
|
+
mutable bool condInitialized_;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
Monitor::Monitor() : impl_(new Monitor::Impl()) {}
|
|
124
|
+
|
|
125
|
+
Monitor::~Monitor() { delete impl_; }
|
|
126
|
+
|
|
127
|
+
void Monitor::lock() const { impl_->lock(); }
|
|
128
|
+
|
|
129
|
+
void Monitor::unlock() const { impl_->unlock(); }
|
|
130
|
+
|
|
131
|
+
void Monitor::wait(int64_t timeout) const { impl_->wait(timeout); }
|
|
132
|
+
|
|
133
|
+
void Monitor::notify() const { impl_->notify(); }
|
|
134
|
+
|
|
135
|
+
void Monitor::notifyAll() const { impl_->notifyAll(); }
|
|
136
|
+
|
|
137
|
+
}}} // apache::thrift::concurrency
|
|
@@ -0,0 +1,84 @@
|
|
|
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_CONCURRENCY_MONITOR_H_
|
|
21
|
+
#define _THRIFT_CONCURRENCY_MONITOR_H_ 1
|
|
22
|
+
|
|
23
|
+
#include "Exception.h"
|
|
24
|
+
|
|
25
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A monitor is a combination mutex and condition-event. Waiting and
|
|
29
|
+
* notifying condition events requires that the caller own the mutex. Mutex
|
|
30
|
+
* lock and unlock operations can be performed independently of condition
|
|
31
|
+
* events. This is more or less analogous to java.lang.Object multi-thread
|
|
32
|
+
* operations
|
|
33
|
+
*
|
|
34
|
+
* Note that all methods are const. Monitors implement logical constness, not
|
|
35
|
+
* bit constness. This allows const methods to call monitor methods without
|
|
36
|
+
* needing to cast away constness or change to non-const signatures.
|
|
37
|
+
*
|
|
38
|
+
* @version $Id:$
|
|
39
|
+
*/
|
|
40
|
+
class Monitor {
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
|
|
44
|
+
Monitor();
|
|
45
|
+
|
|
46
|
+
virtual ~Monitor();
|
|
47
|
+
|
|
48
|
+
virtual void lock() const;
|
|
49
|
+
|
|
50
|
+
virtual void unlock() const;
|
|
51
|
+
|
|
52
|
+
virtual void wait(int64_t timeout=0LL) const;
|
|
53
|
+
|
|
54
|
+
virtual void notify() const;
|
|
55
|
+
|
|
56
|
+
virtual void notifyAll() const;
|
|
57
|
+
|
|
58
|
+
private:
|
|
59
|
+
|
|
60
|
+
class Impl;
|
|
61
|
+
|
|
62
|
+
Impl* impl_;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
class Synchronized {
|
|
66
|
+
public:
|
|
67
|
+
|
|
68
|
+
Synchronized(const Monitor& value) :
|
|
69
|
+
monitor_(value) {
|
|
70
|
+
monitor_.lock();
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
~Synchronized() {
|
|
74
|
+
monitor_.unlock();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private:
|
|
78
|
+
const Monitor& monitor_;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
}}} // apache::thrift::concurrency
|
|
83
|
+
|
|
84
|
+
#endif // #ifndef _THRIFT_CONCURRENCY_MONITOR_H_
|
|
@@ -0,0 +1,160 @@
|
|
|
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 "Mutex.h"
|
|
21
|
+
|
|
22
|
+
#include <assert.h>
|
|
23
|
+
#include <pthread.h>
|
|
24
|
+
|
|
25
|
+
using boost::shared_ptr;
|
|
26
|
+
|
|
27
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Implementation of Mutex class using POSIX mutex
|
|
31
|
+
*
|
|
32
|
+
* @version $Id:$
|
|
33
|
+
*/
|
|
34
|
+
class Mutex::impl {
|
|
35
|
+
public:
|
|
36
|
+
impl(Initializer init) : initialized_(false) {
|
|
37
|
+
init(&pthread_mutex_);
|
|
38
|
+
initialized_ = true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
~impl() {
|
|
42
|
+
if (initialized_) {
|
|
43
|
+
initialized_ = false;
|
|
44
|
+
int ret = pthread_mutex_destroy(&pthread_mutex_);
|
|
45
|
+
assert(ret == 0);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
void lock() const { pthread_mutex_lock(&pthread_mutex_); }
|
|
50
|
+
|
|
51
|
+
bool trylock() const { return (0 == pthread_mutex_trylock(&pthread_mutex_)); }
|
|
52
|
+
|
|
53
|
+
void unlock() const { pthread_mutex_unlock(&pthread_mutex_); }
|
|
54
|
+
|
|
55
|
+
private:
|
|
56
|
+
mutable pthread_mutex_t pthread_mutex_;
|
|
57
|
+
mutable bool initialized_;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
Mutex::Mutex(Initializer init) : impl_(new Mutex::impl(init)) {}
|
|
61
|
+
|
|
62
|
+
void Mutex::lock() const { impl_->lock(); }
|
|
63
|
+
|
|
64
|
+
bool Mutex::trylock() const { return impl_->trylock(); }
|
|
65
|
+
|
|
66
|
+
void Mutex::unlock() const { impl_->unlock(); }
|
|
67
|
+
|
|
68
|
+
void Mutex::DEFAULT_INITIALIZER(void* arg) {
|
|
69
|
+
pthread_mutex_t* pthread_mutex = (pthread_mutex_t*)arg;
|
|
70
|
+
int ret = pthread_mutex_init(pthread_mutex, NULL);
|
|
71
|
+
assert(ret == 0);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static void init_with_kind(pthread_mutex_t* mutex, int kind) {
|
|
75
|
+
pthread_mutexattr_t mutexattr;
|
|
76
|
+
int ret = pthread_mutexattr_init(&mutexattr);
|
|
77
|
+
assert(ret == 0);
|
|
78
|
+
|
|
79
|
+
// Apparently, this can fail. Should we really be aborting?
|
|
80
|
+
ret = pthread_mutexattr_settype(&mutexattr, kind);
|
|
81
|
+
assert(ret == 0);
|
|
82
|
+
|
|
83
|
+
ret = pthread_mutex_init(mutex, &mutexattr);
|
|
84
|
+
assert(ret == 0);
|
|
85
|
+
|
|
86
|
+
ret = pthread_mutexattr_destroy(&mutexattr);
|
|
87
|
+
assert(ret == 0);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
#ifdef PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
|
|
91
|
+
void Mutex::ADAPTIVE_INITIALIZER(void* arg) {
|
|
92
|
+
// From mysql source: mysys/my_thr_init.c
|
|
93
|
+
// Set mutex type to "fast" a.k.a "adaptive"
|
|
94
|
+
//
|
|
95
|
+
// In this case the thread may steal the mutex from some other thread
|
|
96
|
+
// that is waiting for the same mutex. This will save us some
|
|
97
|
+
// context switches but may cause a thread to 'starve forever' while
|
|
98
|
+
// waiting for the mutex (not likely if the code within the mutex is
|
|
99
|
+
// short).
|
|
100
|
+
init_with_kind((pthread_mutex_t*)arg, PTHREAD_MUTEX_ADAPTIVE_NP);
|
|
101
|
+
}
|
|
102
|
+
#endif
|
|
103
|
+
|
|
104
|
+
#ifdef PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
|
|
105
|
+
void Mutex::RECURSIVE_INITIALIZER(void* arg) {
|
|
106
|
+
init_with_kind((pthread_mutex_t*)arg, PTHREAD_MUTEX_RECURSIVE_NP);
|
|
107
|
+
}
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Implementation of ReadWriteMutex class using POSIX rw lock
|
|
113
|
+
*
|
|
114
|
+
* @version $Id:$
|
|
115
|
+
*/
|
|
116
|
+
class ReadWriteMutex::impl {
|
|
117
|
+
public:
|
|
118
|
+
impl() : initialized_(false) {
|
|
119
|
+
int ret = pthread_rwlock_init(&rw_lock_, NULL);
|
|
120
|
+
assert(ret == 0);
|
|
121
|
+
initialized_ = true;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
~impl() {
|
|
125
|
+
if(initialized_) {
|
|
126
|
+
initialized_ = false;
|
|
127
|
+
int ret = pthread_rwlock_destroy(&rw_lock_);
|
|
128
|
+
assert(ret == 0);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
void acquireRead() const { pthread_rwlock_rdlock(&rw_lock_); }
|
|
133
|
+
|
|
134
|
+
void acquireWrite() const { pthread_rwlock_wrlock(&rw_lock_); }
|
|
135
|
+
|
|
136
|
+
bool attemptRead() const { return pthread_rwlock_tryrdlock(&rw_lock_); }
|
|
137
|
+
|
|
138
|
+
bool attemptWrite() const { return pthread_rwlock_trywrlock(&rw_lock_); }
|
|
139
|
+
|
|
140
|
+
void release() const { pthread_rwlock_unlock(&rw_lock_); }
|
|
141
|
+
|
|
142
|
+
private:
|
|
143
|
+
mutable pthread_rwlock_t rw_lock_;
|
|
144
|
+
mutable bool initialized_;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
ReadWriteMutex::ReadWriteMutex() : impl_(new ReadWriteMutex::impl()) {}
|
|
148
|
+
|
|
149
|
+
void ReadWriteMutex::acquireRead() const { impl_->acquireRead(); }
|
|
150
|
+
|
|
151
|
+
void ReadWriteMutex::acquireWrite() const { impl_->acquireWrite(); }
|
|
152
|
+
|
|
153
|
+
bool ReadWriteMutex::attemptRead() const { return impl_->attemptRead(); }
|
|
154
|
+
|
|
155
|
+
bool ReadWriteMutex::attemptWrite() const { return impl_->attemptWrite(); }
|
|
156
|
+
|
|
157
|
+
void ReadWriteMutex::release() const { impl_->release(); }
|
|
158
|
+
|
|
159
|
+
}}} // apache::thrift::concurrency
|
|
160
|
+
|