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,169 @@
|
|
|
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_THREADMANAGER_H_
|
|
21
|
+
#define _THRIFT_CONCURRENCY_THREADMANAGER_H_ 1
|
|
22
|
+
|
|
23
|
+
#include <boost/shared_ptr.hpp>
|
|
24
|
+
#include <sys/types.h>
|
|
25
|
+
#include "Thread.h"
|
|
26
|
+
|
|
27
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Thread Pool Manager and related classes
|
|
31
|
+
*
|
|
32
|
+
* @version $Id:$
|
|
33
|
+
*/
|
|
34
|
+
class ThreadManager;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* ThreadManager class
|
|
38
|
+
*
|
|
39
|
+
* This class manages a pool of threads. It uses a ThreadFactory to create
|
|
40
|
+
* threads. It never actually creates or destroys worker threads, rather
|
|
41
|
+
* It maintains statistics on number of idle threads, number of active threads,
|
|
42
|
+
* task backlog, and average wait and service times and informs the PoolPolicy
|
|
43
|
+
* object bound to instances of this manager of interesting transitions. It is
|
|
44
|
+
* then up the PoolPolicy object to decide if the thread pool size needs to be
|
|
45
|
+
* adjusted and call this object addWorker and removeWorker methods to make
|
|
46
|
+
* changes.
|
|
47
|
+
*
|
|
48
|
+
* This design allows different policy implementations to used this code to
|
|
49
|
+
* handle basic worker thread management and worker task execution and focus on
|
|
50
|
+
* policy issues. The simplest policy, StaticPolicy, does nothing other than
|
|
51
|
+
* create a fixed number of threads.
|
|
52
|
+
*/
|
|
53
|
+
class ThreadManager {
|
|
54
|
+
|
|
55
|
+
protected:
|
|
56
|
+
ThreadManager() {}
|
|
57
|
+
|
|
58
|
+
public:
|
|
59
|
+
virtual ~ThreadManager() {}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Starts the thread manager. Verifies all attributes have been properly
|
|
63
|
+
* initialized, then allocates necessary resources to begin operation
|
|
64
|
+
*/
|
|
65
|
+
virtual void start() = 0;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Stops the thread manager. Aborts all remaining unprocessed task, shuts
|
|
69
|
+
* down all created worker threads, and realeases all allocated resources.
|
|
70
|
+
* This method blocks for all worker threads to complete, thus it can
|
|
71
|
+
* potentially block forever if a worker thread is running a task that
|
|
72
|
+
* won't terminate.
|
|
73
|
+
*/
|
|
74
|
+
virtual void stop() = 0;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Joins the thread manager. This is the same as stop, except that it will
|
|
78
|
+
* block until all the workers have finished their work. At that point
|
|
79
|
+
* the ThreadManager will transition into the STOPPED state.
|
|
80
|
+
*/
|
|
81
|
+
virtual void join() = 0;
|
|
82
|
+
|
|
83
|
+
enum STATE {
|
|
84
|
+
UNINITIALIZED,
|
|
85
|
+
STARTING,
|
|
86
|
+
STARTED,
|
|
87
|
+
JOINING,
|
|
88
|
+
STOPPING,
|
|
89
|
+
STOPPED
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
virtual const STATE state() const = 0;
|
|
93
|
+
|
|
94
|
+
virtual boost::shared_ptr<ThreadFactory> threadFactory() const = 0;
|
|
95
|
+
|
|
96
|
+
virtual void threadFactory(boost::shared_ptr<ThreadFactory> value) = 0;
|
|
97
|
+
|
|
98
|
+
virtual void addWorker(size_t value=1) = 0;
|
|
99
|
+
|
|
100
|
+
virtual void removeWorker(size_t value=1) = 0;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Gets the current number of idle worker threads
|
|
104
|
+
*/
|
|
105
|
+
virtual size_t idleWorkerCount() const = 0;
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Gets the current number of total worker threads
|
|
109
|
+
*/
|
|
110
|
+
virtual size_t workerCount() const = 0;
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Gets the current number of pending tasks
|
|
114
|
+
*/
|
|
115
|
+
virtual size_t pendingTaskCount() const = 0;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Gets the current number of pending and executing tasks
|
|
119
|
+
*/
|
|
120
|
+
virtual size_t totalTaskCount() const = 0;
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Gets the maximum pending task count. 0 indicates no maximum
|
|
124
|
+
*/
|
|
125
|
+
virtual size_t pendingTaskCountMax() const = 0;
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Adds a task to be executed at some time in the future by a worker thread.
|
|
129
|
+
*
|
|
130
|
+
* This method will block if pendingTaskCountMax() in not zero and pendingTaskCount()
|
|
131
|
+
* is greater than or equalt to pendingTaskCountMax(). If this method is called in the
|
|
132
|
+
* context of a ThreadManager worker thread it will throw a
|
|
133
|
+
* TooManyPendingTasksException
|
|
134
|
+
*
|
|
135
|
+
* @param task The task to queue for execution
|
|
136
|
+
*
|
|
137
|
+
* @param timeout Time to wait in milliseconds to add a task when a pending-task-count
|
|
138
|
+
* is specified. Specific cases:
|
|
139
|
+
* timeout = 0 : Wait forever to queue task.
|
|
140
|
+
* timeout = -1 : Return immediately if pending task count exceeds specified max
|
|
141
|
+
*
|
|
142
|
+
* @throws TooManyPendingTasksException Pending task count exceeds max pending task count
|
|
143
|
+
*/
|
|
144
|
+
virtual void add(boost::shared_ptr<Runnable>task, int64_t timeout=0LL) = 0;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Removes a pending task
|
|
148
|
+
*/
|
|
149
|
+
virtual void remove(boost::shared_ptr<Runnable> task) = 0;
|
|
150
|
+
|
|
151
|
+
static boost::shared_ptr<ThreadManager> newThreadManager();
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Creates a simple thread manager the uses count number of worker threads and has
|
|
155
|
+
* a pendingTaskCountMax maximum pending tasks. The default, 0, specified no limit
|
|
156
|
+
* on pending tasks
|
|
157
|
+
*/
|
|
158
|
+
static boost::shared_ptr<ThreadManager> newSimpleThreadManager(size_t count=4, size_t pendingTaskCountMax=0);
|
|
159
|
+
|
|
160
|
+
class Task;
|
|
161
|
+
|
|
162
|
+
class Worker;
|
|
163
|
+
|
|
164
|
+
class Impl;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
}}} // apache::thrift::concurrency
|
|
168
|
+
|
|
169
|
+
#endif // #ifndef _THRIFT_CONCURRENCY_THREADMANAGER_H_
|
|
@@ -0,0 +1,284 @@
|
|
|
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 "TimerManager.h"
|
|
21
|
+
#include "Exception.h"
|
|
22
|
+
#include "Util.h"
|
|
23
|
+
|
|
24
|
+
#include <assert.h>
|
|
25
|
+
#include <iostream>
|
|
26
|
+
#include <set>
|
|
27
|
+
|
|
28
|
+
namespace apache { namespace thrift { namespace concurrency {
|
|
29
|
+
|
|
30
|
+
using boost::shared_ptr;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* TimerManager class
|
|
34
|
+
*
|
|
35
|
+
* @version $Id:$
|
|
36
|
+
*/
|
|
37
|
+
class TimerManager::Task : public Runnable {
|
|
38
|
+
|
|
39
|
+
public:
|
|
40
|
+
enum STATE {
|
|
41
|
+
WAITING,
|
|
42
|
+
EXECUTING,
|
|
43
|
+
CANCELLED,
|
|
44
|
+
COMPLETE
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
Task(shared_ptr<Runnable> runnable) :
|
|
48
|
+
runnable_(runnable),
|
|
49
|
+
state_(WAITING) {}
|
|
50
|
+
|
|
51
|
+
~Task() {
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void run() {
|
|
55
|
+
if (state_ == EXECUTING) {
|
|
56
|
+
runnable_->run();
|
|
57
|
+
state_ = COMPLETE;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private:
|
|
62
|
+
shared_ptr<Runnable> runnable_;
|
|
63
|
+
class TimerManager::Dispatcher;
|
|
64
|
+
friend class TimerManager::Dispatcher;
|
|
65
|
+
STATE state_;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
class TimerManager::Dispatcher: public Runnable {
|
|
69
|
+
|
|
70
|
+
public:
|
|
71
|
+
Dispatcher(TimerManager* manager) :
|
|
72
|
+
manager_(manager) {}
|
|
73
|
+
|
|
74
|
+
~Dispatcher() {}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Dispatcher entry point
|
|
78
|
+
*
|
|
79
|
+
* As long as dispatcher thread is running, pull tasks off the task taskMap_
|
|
80
|
+
* and execute.
|
|
81
|
+
*/
|
|
82
|
+
void run() {
|
|
83
|
+
{
|
|
84
|
+
Synchronized s(manager_->monitor_);
|
|
85
|
+
if (manager_->state_ == TimerManager::STARTING) {
|
|
86
|
+
manager_->state_ = TimerManager::STARTED;
|
|
87
|
+
manager_->monitor_.notifyAll();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
do {
|
|
92
|
+
std::set<shared_ptr<TimerManager::Task> > expiredTasks;
|
|
93
|
+
{
|
|
94
|
+
Synchronized s(manager_->monitor_);
|
|
95
|
+
task_iterator expiredTaskEnd;
|
|
96
|
+
int64_t now = Util::currentTime();
|
|
97
|
+
while (manager_->state_ == TimerManager::STARTED &&
|
|
98
|
+
(expiredTaskEnd = manager_->taskMap_.upper_bound(now)) == manager_->taskMap_.begin()) {
|
|
99
|
+
int64_t timeout = 0LL;
|
|
100
|
+
if (!manager_->taskMap_.empty()) {
|
|
101
|
+
timeout = manager_->taskMap_.begin()->first - now;
|
|
102
|
+
}
|
|
103
|
+
assert((timeout != 0 && manager_->taskCount_ > 0) || (timeout == 0 && manager_->taskCount_ == 0));
|
|
104
|
+
try {
|
|
105
|
+
manager_->monitor_.wait(timeout);
|
|
106
|
+
} catch (TimedOutException &e) {}
|
|
107
|
+
now = Util::currentTime();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (manager_->state_ == TimerManager::STARTED) {
|
|
111
|
+
for (task_iterator ix = manager_->taskMap_.begin(); ix != expiredTaskEnd; ix++) {
|
|
112
|
+
shared_ptr<TimerManager::Task> task = ix->second;
|
|
113
|
+
expiredTasks.insert(task);
|
|
114
|
+
if (task->state_ == TimerManager::Task::WAITING) {
|
|
115
|
+
task->state_ = TimerManager::Task::EXECUTING;
|
|
116
|
+
}
|
|
117
|
+
manager_->taskCount_--;
|
|
118
|
+
}
|
|
119
|
+
manager_->taskMap_.erase(manager_->taskMap_.begin(), expiredTaskEnd);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
for (std::set<shared_ptr<Task> >::iterator ix = expiredTasks.begin(); ix != expiredTasks.end(); ix++) {
|
|
124
|
+
(*ix)->run();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
} while (manager_->state_ == TimerManager::STARTED);
|
|
128
|
+
|
|
129
|
+
{
|
|
130
|
+
Synchronized s(manager_->monitor_);
|
|
131
|
+
if (manager_->state_ == TimerManager::STOPPING) {
|
|
132
|
+
manager_->state_ = TimerManager::STOPPED;
|
|
133
|
+
manager_->monitor_.notify();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
private:
|
|
140
|
+
TimerManager* manager_;
|
|
141
|
+
friend class TimerManager;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
TimerManager::TimerManager() :
|
|
145
|
+
taskCount_(0),
|
|
146
|
+
state_(TimerManager::UNINITIALIZED),
|
|
147
|
+
dispatcher_(shared_ptr<Dispatcher>(new Dispatcher(this))) {
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
TimerManager::~TimerManager() {
|
|
152
|
+
|
|
153
|
+
// If we haven't been explicitly stopped, do so now. We don't need to grab
|
|
154
|
+
// the monitor here, since stop already takes care of reentrancy.
|
|
155
|
+
|
|
156
|
+
if (state_ != STOPPED) {
|
|
157
|
+
try {
|
|
158
|
+
stop();
|
|
159
|
+
} catch(...) {
|
|
160
|
+
throw;
|
|
161
|
+
// uhoh
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
void TimerManager::start() {
|
|
167
|
+
bool doStart = false;
|
|
168
|
+
{
|
|
169
|
+
Synchronized s(monitor_);
|
|
170
|
+
if (threadFactory_ == NULL) {
|
|
171
|
+
throw InvalidArgumentException();
|
|
172
|
+
}
|
|
173
|
+
if (state_ == TimerManager::UNINITIALIZED) {
|
|
174
|
+
state_ = TimerManager::STARTING;
|
|
175
|
+
doStart = true;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (doStart) {
|
|
180
|
+
dispatcherThread_ = threadFactory_->newThread(dispatcher_);
|
|
181
|
+
dispatcherThread_->start();
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
{
|
|
185
|
+
Synchronized s(monitor_);
|
|
186
|
+
while (state_ == TimerManager::STARTING) {
|
|
187
|
+
monitor_.wait();
|
|
188
|
+
}
|
|
189
|
+
assert(state_ != TimerManager::STARTING);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
void TimerManager::stop() {
|
|
194
|
+
bool doStop = false;
|
|
195
|
+
{
|
|
196
|
+
Synchronized s(monitor_);
|
|
197
|
+
if (state_ == TimerManager::UNINITIALIZED) {
|
|
198
|
+
state_ = TimerManager::STOPPED;
|
|
199
|
+
} else if (state_ != STOPPING && state_ != STOPPED) {
|
|
200
|
+
doStop = true;
|
|
201
|
+
state_ = STOPPING;
|
|
202
|
+
monitor_.notifyAll();
|
|
203
|
+
}
|
|
204
|
+
while (state_ != STOPPED) {
|
|
205
|
+
monitor_.wait();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
if (doStop) {
|
|
210
|
+
// Clean up any outstanding tasks
|
|
211
|
+
taskMap_.clear();
|
|
212
|
+
|
|
213
|
+
// Remove dispatcher's reference to us.
|
|
214
|
+
dispatcher_->manager_ = NULL;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
shared_ptr<const ThreadFactory> TimerManager::threadFactory() const {
|
|
219
|
+
Synchronized s(monitor_);
|
|
220
|
+
return threadFactory_;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
void TimerManager::threadFactory(shared_ptr<const ThreadFactory> value) {
|
|
224
|
+
Synchronized s(monitor_);
|
|
225
|
+
threadFactory_ = value;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
size_t TimerManager::taskCount() const {
|
|
229
|
+
return taskCount_;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
void TimerManager::add(shared_ptr<Runnable> task, int64_t timeout) {
|
|
233
|
+
int64_t now = Util::currentTime();
|
|
234
|
+
timeout += now;
|
|
235
|
+
|
|
236
|
+
{
|
|
237
|
+
Synchronized s(monitor_);
|
|
238
|
+
if (state_ != TimerManager::STARTED) {
|
|
239
|
+
throw IllegalStateException();
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// If the task map is empty, we will kick the dispatcher for sure. Otherwise, we kick him
|
|
243
|
+
// if the expiration time is shorter than the current value. Need to test before we insert,
|
|
244
|
+
// because the new task might insert at the front.
|
|
245
|
+
bool notifyRequired = (taskCount_ == 0) ? true : timeout < taskMap_.begin()->first;
|
|
246
|
+
|
|
247
|
+
taskCount_++;
|
|
248
|
+
taskMap_.insert(std::pair<int64_t, shared_ptr<Task> >(timeout, shared_ptr<Task>(new Task(task))));
|
|
249
|
+
|
|
250
|
+
// If the task map was empty, or if we have an expiration that is earlier
|
|
251
|
+
// than any previously seen, kick the dispatcher so it can update its
|
|
252
|
+
// timeout
|
|
253
|
+
if (notifyRequired) {
|
|
254
|
+
monitor_.notify();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
void TimerManager::add(shared_ptr<Runnable> task, const struct timespec& value) {
|
|
260
|
+
|
|
261
|
+
int64_t expiration;
|
|
262
|
+
Util::toMilliseconds(expiration, value);
|
|
263
|
+
|
|
264
|
+
int64_t now = Util::currentTime();
|
|
265
|
+
|
|
266
|
+
if (expiration < now) {
|
|
267
|
+
throw InvalidArgumentException();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
add(task, expiration - now);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
void TimerManager::remove(shared_ptr<Runnable> task) {
|
|
275
|
+
Synchronized s(monitor_);
|
|
276
|
+
if (state_ != TimerManager::STARTED) {
|
|
277
|
+
throw IllegalStateException();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
const TimerManager::STATE TimerManager::state() const { return state_; }
|
|
282
|
+
|
|
283
|
+
}}} // apache::thrift::concurrency
|
|
284
|
+
|