auser-poolparty 1.3.1 → 1.3.2
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/bin/cloud-compile +6 -1
- data/config/jeweler.rb +1 -3
- data/lib/cloud_providers/cloud_provider_instance.rb +11 -1
- data/lib/dependency_resolvers/chef/resources/chef_recipe.rb +51 -0
- data/lib/dependency_resolvers/chef.rb +12 -3
- data/lib/mixins/callbacks.rb +6 -2
- data/lib/poolparty/plugins/apache2/passenger_site.rb +2 -2
- data/test/fixtures/chef/recipes/sudo/attributes/sudoers.rb +30 -0
- data/test/fixtures/chef/recipes/sudo/recipes/default.rb +33 -0
- data/test/fixtures/chef/recipes/sudo/templates/default/sudoers.erb +22 -0
- data/test/lib/dependency_resolvers/chef/resources/chef_recipe_test.rb +21 -0
- data/test/lib/dependency_resolvers/chef_test.rb +8 -1
- data/vendor/gems/thrift/CHANGELOG +1 -0
- data/vendor/gems/thrift/Makefile.am +25 -6
- data/vendor/gems/thrift/Manifest +81 -0
- data/vendor/gems/thrift/README +17 -111
- data/vendor/gems/thrift/Rakefile +104 -0
- data/vendor/gems/thrift/{lib/hs/Setup.lhs → benchmark/Benchmark.thrift} +5 -4
- data/vendor/gems/thrift/benchmark/benchmark.rb +271 -0
- data/vendor/gems/thrift/benchmark/client.rb +74 -0
- data/vendor/gems/thrift/benchmark/server.rb +82 -0
- data/vendor/gems/thrift/benchmark/thin_server.rb +44 -0
- data/vendor/gems/thrift/ext/binary_protocol_accelerated.c +474 -0
- data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.m → ext/binary_protocol_accelerated.h} +1 -4
- data/vendor/gems/thrift/ext/compact_protocol.c +665 -0
- data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.h → ext/compact_protocol.h} +1 -6
- data/vendor/gems/thrift/ext/constants.h +95 -0
- data/vendor/gems/thrift/{contrib/fb303/Makefile.am → ext/extconf.rb} +8 -13
- data/vendor/gems/thrift/{compiler/cpp/src/platform.h → ext/macros.h} +18 -13
- data/vendor/gems/thrift/ext/memory_buffer.c +76 -0
- data/vendor/gems/thrift/{lib/csharp/src/Protocol/TMessageType.cs → ext/memory_buffer.h} +2 -13
- data/vendor/gems/thrift/ext/protocol.c +185 -0
- data/vendor/gems/thrift/{lib/csharp/src/TProcessor.cs → ext/protocol.h} +2 -11
- data/vendor/gems/thrift/ext/struct.c +606 -0
- data/vendor/gems/thrift/ext/struct.h +67 -0
- data/vendor/gems/thrift/ext/thrift_native.c +194 -0
- data/vendor/gems/thrift/lib/thrift/client.rb +62 -0
- data/vendor/gems/thrift/{contrib/fb303/py/fb303_scripts/__init__.py → lib/thrift/core_ext/fixnum.rb} +13 -4
- data/vendor/gems/thrift/{contrib/fb303/global_footer.mk → lib/thrift/core_ext.rb} +4 -2
- data/vendor/gems/thrift/lib/thrift/exceptions.rb +82 -0
- data/vendor/gems/thrift/lib/thrift/processor.rb +57 -0
- data/vendor/gems/thrift/lib/thrift/protocol/base_protocol.rb +290 -0
- data/vendor/gems/thrift/lib/thrift/protocol/binary_protocol.rb +225 -0
- data/vendor/gems/thrift/{cleanup.sh → lib/thrift/protocol/binary_protocol_accelerated.rb} +19 -42
- data/vendor/gems/thrift/lib/thrift/protocol/compact_protocol.rb +422 -0
- data/vendor/gems/thrift/lib/thrift/serializer/deserializer.rb +33 -0
- data/vendor/gems/thrift/{bootstrap.sh → lib/thrift/serializer/serializer.rb} +17 -18
- data/vendor/gems/thrift/lib/thrift/server/base_server.rb +31 -0
- data/vendor/gems/thrift/lib/thrift/server/mongrel_http_server.rb +58 -0
- data/vendor/gems/thrift/lib/thrift/server/nonblocking_server.rb +296 -0
- data/vendor/gems/thrift/lib/thrift/server/simple_server.rb +43 -0
- data/vendor/gems/thrift/lib/thrift/server/thread_pool_server.rb +75 -0
- data/vendor/gems/thrift/lib/thrift/server/threaded_server.rb +47 -0
- data/vendor/gems/thrift/lib/thrift/struct.rb +298 -0
- data/vendor/gems/thrift/{contrib/fb303/bootstrap.sh → lib/thrift/thrift_native.rb} +5 -7
- data/vendor/gems/thrift/lib/{erl/Makefile → thrift/transport/base_server_transport.rb} +20 -20
- data/vendor/gems/thrift/lib/thrift/transport/base_transport.rb +70 -0
- data/vendor/gems/thrift/lib/thrift/transport/buffered_transport.rb +77 -0
- data/vendor/gems/thrift/lib/thrift/transport/framed_transport.rb +90 -0
- data/vendor/gems/thrift/lib/thrift/transport/http_client_transport.rb +45 -0
- data/vendor/gems/thrift/lib/thrift/transport/io_stream_transport.rb +39 -0
- data/vendor/gems/thrift/lib/thrift/transport/memory_buffer_transport.rb +96 -0
- data/vendor/gems/thrift/lib/thrift/transport/server_socket.rb +63 -0
- data/vendor/gems/thrift/lib/thrift/transport/socket.rb +136 -0
- data/vendor/gems/thrift/lib/{java/Makefile.am → thrift/transport/unix_server_socket.rb} +39 -17
- data/vendor/gems/thrift/{contrib/fb303/global_header.mk → lib/thrift/transport/unix_socket.rb} +23 -21
- data/vendor/gems/thrift/lib/thrift/types.rb +101 -0
- data/vendor/gems/thrift/lib/thrift.rb +59 -0
- data/vendor/gems/thrift/script/proto_benchmark.rb +121 -0
- data/vendor/gems/thrift/{lib/Makefile.am → script/read_struct.rb} +24 -36
- data/vendor/gems/thrift/{contrib/fb303/py/setup.py → script/write_struct.rb} +8 -5
- data/vendor/gems/thrift/setup.rb +1585 -0
- data/vendor/gems/thrift/spec/ThriftSpec.thrift +84 -0
- data/vendor/gems/thrift/spec/base_protocol_spec.rb +160 -0
- data/vendor/gems/thrift/spec/base_transport_spec.rb +351 -0
- data/vendor/gems/thrift/{contrib/fb303/py/Makefile.am → spec/binary_protocol_accelerated_spec.rb} +22 -25
- data/vendor/gems/thrift/spec/binary_protocol_spec.rb +63 -0
- data/vendor/gems/thrift/spec/binary_protocol_spec_shared.rb +375 -0
- data/vendor/gems/thrift/spec/client_spec.rb +100 -0
- data/vendor/gems/thrift/spec/compact_protocol_spec.rb +117 -0
- data/vendor/gems/thrift/spec/exception_spec.rb +142 -0
- data/vendor/gems/thrift/spec/http_client_spec.rb +49 -0
- data/vendor/gems/thrift/spec/mongrel_http_server_spec.rb +117 -0
- data/vendor/gems/thrift/spec/nonblocking_server_spec.rb +265 -0
- data/vendor/gems/thrift/spec/processor_spec.rb +83 -0
- data/vendor/gems/thrift/spec/serializer_spec.rb +69 -0
- data/vendor/gems/thrift/spec/server_socket_spec.rb +80 -0
- data/vendor/gems/thrift/spec/server_spec.rb +160 -0
- data/vendor/gems/thrift/spec/socket_spec.rb +61 -0
- data/vendor/gems/thrift/spec/socket_spec_shared.rb +104 -0
- data/vendor/gems/thrift/spec/spec_helper.rb +60 -0
- data/vendor/gems/thrift/spec/struct_spec.rb +252 -0
- data/vendor/gems/thrift/spec/types_spec.rb +116 -0
- data/vendor/gems/thrift/spec/unix_socket_spec.rb +108 -0
- data/vendor/gems/trollop/FAQ.txt +84 -0
- data/vendor/gems/trollop/History.txt +101 -0
- data/vendor/gems/trollop/Manifest.txt +7 -0
- data/vendor/gems/trollop/README.txt +40 -0
- data/vendor/gems/trollop/Rakefile +36 -0
- data/vendor/gems/trollop/lib/trollop.rb +739 -0
- data/vendor/gems/trollop/release-script.txt +13 -0
- data/vendor/gems/trollop/test/test_trollop.rb +1048 -0
- data/vendor/gems/trollop/www/index.html +172 -0
- metadata +123 -347
- data/vendor/gems/thrift/CHANGES +0 -35
- data/vendor/gems/thrift/CONTRIBUTORS +0 -77
- data/vendor/gems/thrift/DISCLAIMER +0 -6
- data/vendor/gems/thrift/LICENSE +0 -202
- data/vendor/gems/thrift/NEWS +0 -79
- data/vendor/gems/thrift/NOTICE +0 -26
- data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +0 -198
- data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +0 -107
- data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +0 -194
- data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +0 -173
- data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +0 -127
- data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +0 -39
- data/vendor/gems/thrift/compiler/cpp/Makefile.am +0 -136
- data/vendor/gems/thrift/compiler/cpp/README +0 -39
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +0 -2331
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +0 -3003
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +0 -1700
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +0 -932
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +0 -173
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +0 -321
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +0 -1445
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +0 -637
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +0 -3069
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +0 -1673
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +0 -77
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +0 -1812
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +0 -2281
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +0 -2310
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +0 -1114
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +0 -1071
- data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +0 -354
- data/vendor/gems/thrift/compiler/cpp/src/globals.h +0 -117
- data/vendor/gems/thrift/compiler/cpp/src/main.cc +0 -1207
- data/vendor/gems/thrift/compiler/cpp/src/main.h +0 -103
- data/vendor/gems/thrift/compiler/cpp/src/md5.c +0 -381
- data/vendor/gems/thrift/compiler/cpp/src/md5.h +0 -91
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +0 -137
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +0 -59
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +0 -121
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +0 -56
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +0 -51
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +0 -59
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +0 -64
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +0 -150
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +0 -93
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +0 -56
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +0 -64
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +0 -223
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +0 -86
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +0 -68
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +0 -55
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +0 -127
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +0 -176
- data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +0 -70
- data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +0 -303
- data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +0 -1140
- data/vendor/gems/thrift/configure.ac +0 -255
- data/vendor/gems/thrift/contrib/fb303/LICENSE +0 -16
- data/vendor/gems/thrift/contrib/fb303/README +0 -37
- data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +0 -258
- data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +0 -198
- data/vendor/gems/thrift/contrib/fb303/configure.ac +0 -115
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +0 -124
- data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +0 -103
- data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +0 -84
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +0 -481
- data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +0 -215
- data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +0 -112
- data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +0 -103
- data/vendor/gems/thrift/contrib/fb303/java/build.xml +0 -84
- data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +0 -89
- data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +0 -82
- data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +0 -195
- data/vendor/gems/thrift/contrib/thrift.el +0 -126
- data/vendor/gems/thrift/contrib/thrift.spec +0 -206
- data/vendor/gems/thrift/contrib/thrift.vim +0 -91
- data/vendor/gems/thrift/contrib/thrift_dump.cpp +0 -91
- data/vendor/gems/thrift/doc/lgpl-2.1.txt +0 -504
- data/vendor/gems/thrift/doc/otp-base-license.txt +0 -20
- data/vendor/gems/thrift/doc/thrift.bnf +0 -96
- data/vendor/gems/thrift/doc/thrift.tex +0 -1057
- data/vendor/gems/thrift/lib/cocoa/README +0 -21
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +0 -44
- data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +0 -130
- data/vendor/gems/thrift/lib/cocoa/src/TException.h +0 -34
- data/vendor/gems/thrift/lib/cocoa/src/TException.m +0 -64
- data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +0 -29
- data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +0 -27
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +0 -27
- data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +0 -51
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +0 -51
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +0 -477
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +0 -148
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +0 -29
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +0 -29
- data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +0 -104
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +0 -50
- data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +0 -153
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +0 -42
- data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +0 -159
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +0 -35
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +0 -91
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +0 -38
- data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +0 -89
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +0 -32
- data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +0 -58
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +0 -36
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +0 -30
- data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +0 -43
- data/vendor/gems/thrift/lib/cpp/Makefile.am +0 -158
- data/vendor/gems/thrift/lib/cpp/README +0 -67
- data/vendor/gems/thrift/lib/cpp/src/TLogging.h +0 -163
- data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +0 -53
- data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +0 -96
- data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +0 -148
- data/vendor/gems/thrift/lib/cpp/src/Thrift.h +0 -191
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +0 -60
- data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +0 -77
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +0 -137
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +0 -84
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +0 -160
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +0 -114
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +0 -314
- data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +0 -130
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +0 -125
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +0 -493
- data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +0 -169
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +0 -284
- data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +0 -122
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +0 -55
- data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +0 -100
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +0 -155
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +0 -354
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +0 -379
- data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +0 -155
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +0 -122
- data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +0 -77
- data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +0 -264
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +0 -79
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +0 -42
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +0 -394
- data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +0 -254
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +0 -736
- data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +0 -279
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +0 -346
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +0 -225
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +0 -762
- data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +0 -253
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +0 -998
- data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +0 -340
- data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +0 -304
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +0 -438
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +0 -104
- data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +0 -187
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +0 -750
- data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +0 -435
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +0 -38
- data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +0 -213
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +0 -118
- data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +0 -70
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +0 -217
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +0 -79
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +0 -243
- data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +0 -74
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +0 -370
- data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +0 -667
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +0 -77
- data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +0 -73
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +0 -953
- data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +0 -442
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +0 -348
- data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +0 -111
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +0 -368
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +0 -76
- data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +0 -92
- data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +0 -96
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +0 -54
- data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +0 -41
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +0 -591
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +0 -242
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +0 -235
- data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +0 -191
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +0 -224
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +0 -31
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +0 -117
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +0 -178
- data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +0 -287
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +0 -299
- data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +0 -219
- data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +0 -30
- data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +0 -30
- data/vendor/gems/thrift/lib/cpp/thrift.pc.in +0 -29
- data/vendor/gems/thrift/lib/csharp/Makefile.am +0 -70
- data/vendor/gems/thrift/lib/csharp/README +0 -26
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +0 -55
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +0 -242
- data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +0 -62
- data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +0 -142
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +0 -34
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +0 -392
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +0 -58
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +0 -50
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +0 -58
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +0 -58
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +0 -87
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +0 -61
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +0 -29
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +0 -94
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +0 -50
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +0 -42
- data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +0 -40
- data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +0 -135
- data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +0 -148
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +0 -186
- data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +0 -234
- data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +0 -131
- data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +0 -73
- data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +0 -35
- data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +0 -100
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +0 -157
- data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +0 -39
- data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +0 -144
- data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +0 -103
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +0 -66
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +0 -64
- data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +0 -38
- data/vendor/gems/thrift/lib/erl/README +0 -56
- data/vendor/gems/thrift/lib/erl/build/beamver +0 -59
- data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +0 -15
- data/vendor/gems/thrift/lib/erl/build/colors.mk +0 -24
- data/vendor/gems/thrift/lib/erl/build/docs.mk +0 -12
- data/vendor/gems/thrift/lib/erl/build/mime.types +0 -98
- data/vendor/gems/thrift/lib/erl/build/otp.mk +0 -146
- data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +0 -85
- data/vendor/gems/thrift/lib/erl/build/raw_test.mk +0 -29
- data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +0 -54
- data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +0 -31
- data/vendor/gems/thrift/lib/erl/src/Makefile +0 -116
- data/vendor/gems/thrift/lib/erl/src/test_handler.erl +0 -26
- data/vendor/gems/thrift/lib/erl/src/test_service.erl +0 -29
- data/vendor/gems/thrift/lib/erl/src/thrift.app.src +0 -44
- data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +0 -1
- data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +0 -64
- data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +0 -325
- data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +0 -180
- data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +0 -384
- data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +0 -118
- data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +0 -87
- data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +0 -208
- data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +0 -199
- data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +0 -164
- data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +0 -188
- data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +0 -356
- data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +0 -183
- data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +0 -25
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +0 -249
- data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +0 -119
- data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +0 -57
- data/vendor/gems/thrift/lib/erl/vsn.mk +0 -1
- data/vendor/gems/thrift/lib/hs/README +0 -82
- data/vendor/gems/thrift/lib/hs/TODO +0 -2
- data/vendor/gems/thrift/lib/hs/Thrift.cabal +0 -20
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +0 -147
- data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +0 -191
- data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +0 -65
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +0 -58
- data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +0 -60
- data/vendor/gems/thrift/lib/hs/src/Thrift.hs +0 -111
- data/vendor/gems/thrift/lib/java/README +0 -43
- data/vendor/gems/thrift/lib/java/build.xml +0 -195
- data/vendor/gems/thrift/lib/java/ivy.xml +0 -8
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +0 -171
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +0 -123
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +0 -66
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +0 -102
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +0 -46
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +0 -94
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +0 -45
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +0 -30
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +0 -32
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +0 -39
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +0 -110
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +0 -69
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +0 -42
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +0 -29
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +0 -31
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +0 -29
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +0 -31
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +0 -128
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +0 -331
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +0 -741
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +0 -48
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +0 -927
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +0 -38
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +0 -40
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +0 -48
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +0 -31
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +0 -146
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +0 -81
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +0 -30
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +0 -158
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +0 -42
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +0 -384
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +0 -36
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +0 -40
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +0 -304
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +0 -772
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +0 -126
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +0 -145
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +0 -271
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +0 -126
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +0 -157
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +0 -159
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +0 -98
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +0 -160
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +0 -31
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +0 -213
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +0 -31
- data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +0 -145
|
@@ -1,493 +0,0 @@
|
|
|
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 "ThreadManager.h"
|
|
21
|
-
#include "Exception.h"
|
|
22
|
-
#include "Monitor.h"
|
|
23
|
-
|
|
24
|
-
#include <boost/shared_ptr.hpp>
|
|
25
|
-
|
|
26
|
-
#include <assert.h>
|
|
27
|
-
#include <queue>
|
|
28
|
-
#include <set>
|
|
29
|
-
|
|
30
|
-
#if defined(DEBUG)
|
|
31
|
-
#include <iostream>
|
|
32
|
-
#endif //defined(DEBUG)
|
|
33
|
-
|
|
34
|
-
namespace apache { namespace thrift { namespace concurrency {
|
|
35
|
-
|
|
36
|
-
using boost::shared_ptr;
|
|
37
|
-
using boost::dynamic_pointer_cast;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* ThreadManager class
|
|
41
|
-
*
|
|
42
|
-
* This class manages a pool of threads. It uses a ThreadFactory to create
|
|
43
|
-
* threads. It never actually creates or destroys worker threads, rather
|
|
44
|
-
* it maintains statistics on number of idle threads, number of active threads,
|
|
45
|
-
* task backlog, and average wait and service times.
|
|
46
|
-
*
|
|
47
|
-
* @version $Id:$
|
|
48
|
-
*/
|
|
49
|
-
class ThreadManager::Impl : public ThreadManager {
|
|
50
|
-
|
|
51
|
-
public:
|
|
52
|
-
Impl() :
|
|
53
|
-
workerCount_(0),
|
|
54
|
-
workerMaxCount_(0),
|
|
55
|
-
idleCount_(0),
|
|
56
|
-
pendingTaskCountMax_(0),
|
|
57
|
-
state_(ThreadManager::UNINITIALIZED) {}
|
|
58
|
-
|
|
59
|
-
~Impl() { stop(); }
|
|
60
|
-
|
|
61
|
-
void start();
|
|
62
|
-
|
|
63
|
-
void stop() { stopImpl(false); }
|
|
64
|
-
|
|
65
|
-
void join() { stopImpl(true); }
|
|
66
|
-
|
|
67
|
-
const ThreadManager::STATE state() const {
|
|
68
|
-
return state_;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
shared_ptr<ThreadFactory> threadFactory() const {
|
|
72
|
-
Synchronized s(monitor_);
|
|
73
|
-
return threadFactory_;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
void threadFactory(shared_ptr<ThreadFactory> value) {
|
|
77
|
-
Synchronized s(monitor_);
|
|
78
|
-
threadFactory_ = value;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
void addWorker(size_t value);
|
|
82
|
-
|
|
83
|
-
void removeWorker(size_t value);
|
|
84
|
-
|
|
85
|
-
size_t idleWorkerCount() const {
|
|
86
|
-
return idleCount_;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
size_t workerCount() const {
|
|
90
|
-
Synchronized s(monitor_);
|
|
91
|
-
return workerCount_;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
size_t pendingTaskCount() const {
|
|
95
|
-
Synchronized s(monitor_);
|
|
96
|
-
return tasks_.size();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
size_t totalTaskCount() const {
|
|
100
|
-
Synchronized s(monitor_);
|
|
101
|
-
return tasks_.size() + workerCount_ - idleCount_;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
size_t pendingTaskCountMax() const {
|
|
105
|
-
Synchronized s(monitor_);
|
|
106
|
-
return pendingTaskCountMax_;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
void pendingTaskCountMax(const size_t value) {
|
|
110
|
-
Synchronized s(monitor_);
|
|
111
|
-
pendingTaskCountMax_ = value;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
bool canSleep();
|
|
115
|
-
|
|
116
|
-
void add(shared_ptr<Runnable> value, int64_t timeout);
|
|
117
|
-
|
|
118
|
-
void remove(shared_ptr<Runnable> task);
|
|
119
|
-
|
|
120
|
-
private:
|
|
121
|
-
void stopImpl(bool join);
|
|
122
|
-
|
|
123
|
-
size_t workerCount_;
|
|
124
|
-
size_t workerMaxCount_;
|
|
125
|
-
size_t idleCount_;
|
|
126
|
-
size_t pendingTaskCountMax_;
|
|
127
|
-
|
|
128
|
-
ThreadManager::STATE state_;
|
|
129
|
-
shared_ptr<ThreadFactory> threadFactory_;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
friend class ThreadManager::Task;
|
|
133
|
-
std::queue<shared_ptr<Task> > tasks_;
|
|
134
|
-
Monitor monitor_;
|
|
135
|
-
Monitor workerMonitor_;
|
|
136
|
-
|
|
137
|
-
friend class ThreadManager::Worker;
|
|
138
|
-
std::set<shared_ptr<Thread> > workers_;
|
|
139
|
-
std::set<shared_ptr<Thread> > deadWorkers_;
|
|
140
|
-
std::map<const Thread::id_t, shared_ptr<Thread> > idMap_;
|
|
141
|
-
};
|
|
142
|
-
|
|
143
|
-
class ThreadManager::Task : public Runnable {
|
|
144
|
-
|
|
145
|
-
public:
|
|
146
|
-
enum STATE {
|
|
147
|
-
WAITING,
|
|
148
|
-
EXECUTING,
|
|
149
|
-
CANCELLED,
|
|
150
|
-
COMPLETE
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
Task(shared_ptr<Runnable> runnable) :
|
|
154
|
-
runnable_(runnable),
|
|
155
|
-
state_(WAITING) {}
|
|
156
|
-
|
|
157
|
-
~Task() {}
|
|
158
|
-
|
|
159
|
-
void run() {
|
|
160
|
-
if (state_ == EXECUTING) {
|
|
161
|
-
runnable_->run();
|
|
162
|
-
state_ = COMPLETE;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
private:
|
|
167
|
-
shared_ptr<Runnable> runnable_;
|
|
168
|
-
friend class ThreadManager::Worker;
|
|
169
|
-
STATE state_;
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
class ThreadManager::Worker: public Runnable {
|
|
173
|
-
enum STATE {
|
|
174
|
-
UNINITIALIZED,
|
|
175
|
-
STARTING,
|
|
176
|
-
STARTED,
|
|
177
|
-
STOPPING,
|
|
178
|
-
STOPPED
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
public:
|
|
182
|
-
Worker(ThreadManager::Impl* manager) :
|
|
183
|
-
manager_(manager),
|
|
184
|
-
state_(UNINITIALIZED),
|
|
185
|
-
idle_(false) {}
|
|
186
|
-
|
|
187
|
-
~Worker() {}
|
|
188
|
-
|
|
189
|
-
private:
|
|
190
|
-
bool isActive() const {
|
|
191
|
-
return
|
|
192
|
-
(manager_->workerCount_ <= manager_->workerMaxCount_) ||
|
|
193
|
-
(manager_->state_ == JOINING && !manager_->tasks_.empty());
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
public:
|
|
197
|
-
/**
|
|
198
|
-
* Worker entry point
|
|
199
|
-
*
|
|
200
|
-
* As long as worker thread is running, pull tasks off the task queue and
|
|
201
|
-
* execute.
|
|
202
|
-
*/
|
|
203
|
-
void run() {
|
|
204
|
-
bool active = false;
|
|
205
|
-
bool notifyManager = false;
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Increment worker semaphore and notify manager if worker count reached
|
|
209
|
-
* desired max
|
|
210
|
-
*
|
|
211
|
-
* Note: We have to release the monitor and acquire the workerMonitor
|
|
212
|
-
* since that is what the manager blocks on for worker add/remove
|
|
213
|
-
*/
|
|
214
|
-
{
|
|
215
|
-
Synchronized s(manager_->monitor_);
|
|
216
|
-
active = manager_->workerCount_ < manager_->workerMaxCount_;
|
|
217
|
-
if (active) {
|
|
218
|
-
manager_->workerCount_++;
|
|
219
|
-
notifyManager = manager_->workerCount_ == manager_->workerMaxCount_;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
if (notifyManager) {
|
|
224
|
-
Synchronized s(manager_->workerMonitor_);
|
|
225
|
-
manager_->workerMonitor_.notify();
|
|
226
|
-
notifyManager = false;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
while (active) {
|
|
230
|
-
shared_ptr<ThreadManager::Task> task;
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* While holding manager monitor block for non-empty task queue (Also
|
|
234
|
-
* check that the thread hasn't been requested to stop). Once the queue
|
|
235
|
-
* is non-empty, dequeue a task, release monitor, and execute. If the
|
|
236
|
-
* worker max count has been decremented such that we exceed it, mark
|
|
237
|
-
* ourself inactive, decrement the worker count and notify the manager
|
|
238
|
-
* (technically we're notifying the next blocked thread but eventually
|
|
239
|
-
* the manager will see it.
|
|
240
|
-
*/
|
|
241
|
-
{
|
|
242
|
-
Synchronized s(manager_->monitor_);
|
|
243
|
-
active = isActive();
|
|
244
|
-
|
|
245
|
-
while (active && manager_->tasks_.empty()) {
|
|
246
|
-
manager_->idleCount_++;
|
|
247
|
-
idle_ = true;
|
|
248
|
-
manager_->monitor_.wait();
|
|
249
|
-
active = isActive();
|
|
250
|
-
idle_ = false;
|
|
251
|
-
manager_->idleCount_--;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
if (active) {
|
|
255
|
-
if (!manager_->tasks_.empty()) {
|
|
256
|
-
task = manager_->tasks_.front();
|
|
257
|
-
manager_->tasks_.pop();
|
|
258
|
-
if (task->state_ == ThreadManager::Task::WAITING) {
|
|
259
|
-
task->state_ = ThreadManager::Task::EXECUTING;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/* If we have a pending task max and we just dropped below it, wakeup any
|
|
263
|
-
thread that might be blocked on add. */
|
|
264
|
-
if (manager_->pendingTaskCountMax_ != 0 &&
|
|
265
|
-
manager_->tasks_.size() == manager_->pendingTaskCountMax_ - 1) {
|
|
266
|
-
manager_->monitor_.notify();
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
} else {
|
|
270
|
-
idle_ = true;
|
|
271
|
-
manager_->workerCount_--;
|
|
272
|
-
notifyManager = (manager_->workerCount_ == manager_->workerMaxCount_);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
if (task != NULL) {
|
|
277
|
-
if (task->state_ == ThreadManager::Task::EXECUTING) {
|
|
278
|
-
try {
|
|
279
|
-
task->run();
|
|
280
|
-
} catch(...) {
|
|
281
|
-
// XXX need to log this
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
{
|
|
288
|
-
Synchronized s(manager_->workerMonitor_);
|
|
289
|
-
manager_->deadWorkers_.insert(this->thread());
|
|
290
|
-
if (notifyManager) {
|
|
291
|
-
manager_->workerMonitor_.notify();
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
private:
|
|
299
|
-
ThreadManager::Impl* manager_;
|
|
300
|
-
friend class ThreadManager::Impl;
|
|
301
|
-
STATE state_;
|
|
302
|
-
bool idle_;
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
void ThreadManager::Impl::addWorker(size_t value) {
|
|
307
|
-
std::set<shared_ptr<Thread> > newThreads;
|
|
308
|
-
for (size_t ix = 0; ix < value; ix++) {
|
|
309
|
-
class ThreadManager::Worker;
|
|
310
|
-
shared_ptr<ThreadManager::Worker> worker = shared_ptr<ThreadManager::Worker>(new ThreadManager::Worker(this));
|
|
311
|
-
newThreads.insert(threadFactory_->newThread(worker));
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
{
|
|
315
|
-
Synchronized s(monitor_);
|
|
316
|
-
workerMaxCount_ += value;
|
|
317
|
-
workers_.insert(newThreads.begin(), newThreads.end());
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
for (std::set<shared_ptr<Thread> >::iterator ix = newThreads.begin(); ix != newThreads.end(); ix++) {
|
|
321
|
-
shared_ptr<ThreadManager::Worker> worker = dynamic_pointer_cast<ThreadManager::Worker, Runnable>((*ix)->runnable());
|
|
322
|
-
worker->state_ = ThreadManager::Worker::STARTING;
|
|
323
|
-
(*ix)->start();
|
|
324
|
-
idMap_.insert(std::pair<const Thread::id_t, shared_ptr<Thread> >((*ix)->getId(), *ix));
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
{
|
|
328
|
-
Synchronized s(workerMonitor_);
|
|
329
|
-
while (workerCount_ != workerMaxCount_) {
|
|
330
|
-
workerMonitor_.wait();
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
void ThreadManager::Impl::start() {
|
|
336
|
-
|
|
337
|
-
if (state_ == ThreadManager::STOPPED) {
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
{
|
|
342
|
-
Synchronized s(monitor_);
|
|
343
|
-
if (state_ == ThreadManager::UNINITIALIZED) {
|
|
344
|
-
if (threadFactory_ == NULL) {
|
|
345
|
-
throw InvalidArgumentException();
|
|
346
|
-
}
|
|
347
|
-
state_ = ThreadManager::STARTED;
|
|
348
|
-
monitor_.notifyAll();
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
while (state_ == STARTING) {
|
|
352
|
-
monitor_.wait();
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
void ThreadManager::Impl::stopImpl(bool join) {
|
|
358
|
-
bool doStop = false;
|
|
359
|
-
if (state_ == ThreadManager::STOPPED) {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
{
|
|
364
|
-
Synchronized s(monitor_);
|
|
365
|
-
if (state_ != ThreadManager::STOPPING &&
|
|
366
|
-
state_ != ThreadManager::JOINING &&
|
|
367
|
-
state_ != ThreadManager::STOPPED) {
|
|
368
|
-
doStop = true;
|
|
369
|
-
state_ = join ? ThreadManager::JOINING : ThreadManager::STOPPING;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
if (doStop) {
|
|
374
|
-
removeWorker(workerCount_);
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
// XXX
|
|
378
|
-
// should be able to block here for transition to STOPPED since we're no
|
|
379
|
-
// using shared_ptrs
|
|
380
|
-
|
|
381
|
-
{
|
|
382
|
-
Synchronized s(monitor_);
|
|
383
|
-
state_ = ThreadManager::STOPPED;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
void ThreadManager::Impl::removeWorker(size_t value) {
|
|
389
|
-
std::set<shared_ptr<Thread> > removedThreads;
|
|
390
|
-
{
|
|
391
|
-
Synchronized s(monitor_);
|
|
392
|
-
if (value > workerMaxCount_) {
|
|
393
|
-
throw InvalidArgumentException();
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
workerMaxCount_ -= value;
|
|
397
|
-
|
|
398
|
-
if (idleCount_ < value) {
|
|
399
|
-
for (size_t ix = 0; ix < idleCount_; ix++) {
|
|
400
|
-
monitor_.notify();
|
|
401
|
-
}
|
|
402
|
-
} else {
|
|
403
|
-
monitor_.notifyAll();
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
|
|
407
|
-
{
|
|
408
|
-
Synchronized s(workerMonitor_);
|
|
409
|
-
|
|
410
|
-
while (workerCount_ != workerMaxCount_) {
|
|
411
|
-
workerMonitor_.wait();
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
for (std::set<shared_ptr<Thread> >::iterator ix = deadWorkers_.begin(); ix != deadWorkers_.end(); ix++) {
|
|
415
|
-
workers_.erase(*ix);
|
|
416
|
-
idMap_.erase((*ix)->getId());
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
deadWorkers_.clear();
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
bool ThreadManager::Impl::canSleep() {
|
|
424
|
-
const Thread::id_t id = threadFactory_->getCurrentThreadId();
|
|
425
|
-
return idMap_.find(id) == idMap_.end();
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
void ThreadManager::Impl::add(shared_ptr<Runnable> value, int64_t timeout) {
|
|
429
|
-
Synchronized s(monitor_);
|
|
430
|
-
|
|
431
|
-
if (state_ != ThreadManager::STARTED) {
|
|
432
|
-
throw IllegalStateException();
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
if (pendingTaskCountMax_ > 0 && (tasks_.size() >= pendingTaskCountMax_)) {
|
|
436
|
-
if (canSleep() && timeout >= 0) {
|
|
437
|
-
while (pendingTaskCountMax_ > 0 && tasks_.size() >= pendingTaskCountMax_) {
|
|
438
|
-
monitor_.wait(timeout);
|
|
439
|
-
}
|
|
440
|
-
} else {
|
|
441
|
-
throw TooManyPendingTasksException();
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
|
|
445
|
-
tasks_.push(shared_ptr<ThreadManager::Task>(new ThreadManager::Task(value)));
|
|
446
|
-
|
|
447
|
-
// If idle thread is available notify it, otherwise all worker threads are
|
|
448
|
-
// running and will get around to this task in time.
|
|
449
|
-
if (idleCount_ > 0) {
|
|
450
|
-
monitor_.notify();
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
void ThreadManager::Impl::remove(shared_ptr<Runnable> task) {
|
|
455
|
-
Synchronized s(monitor_);
|
|
456
|
-
if (state_ != ThreadManager::STARTED) {
|
|
457
|
-
throw IllegalStateException();
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
class SimpleThreadManager : public ThreadManager::Impl {
|
|
462
|
-
|
|
463
|
-
public:
|
|
464
|
-
SimpleThreadManager(size_t workerCount=4, size_t pendingTaskCountMax=0) :
|
|
465
|
-
workerCount_(workerCount),
|
|
466
|
-
pendingTaskCountMax_(pendingTaskCountMax),
|
|
467
|
-
firstTime_(true) {
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
void start() {
|
|
471
|
-
ThreadManager::Impl::pendingTaskCountMax(pendingTaskCountMax_);
|
|
472
|
-
ThreadManager::Impl::start();
|
|
473
|
-
addWorker(workerCount_);
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
private:
|
|
477
|
-
const size_t workerCount_;
|
|
478
|
-
const size_t pendingTaskCountMax_;
|
|
479
|
-
bool firstTime_;
|
|
480
|
-
Monitor monitor_;
|
|
481
|
-
};
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
shared_ptr<ThreadManager> ThreadManager::newThreadManager() {
|
|
485
|
-
return shared_ptr<ThreadManager>(new ThreadManager::Impl());
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
shared_ptr<ThreadManager> ThreadManager::newSimpleThreadManager(size_t count, size_t pendingTaskCountMax) {
|
|
489
|
-
return shared_ptr<ThreadManager>(new SimpleThreadManager(count, pendingTaskCountMax));
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
}}} // apache::thrift::concurrency
|
|
493
|
-
|
|
@@ -1,169 +0,0 @@
|
|
|
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_
|