auser-poolparty 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (424) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud-compile +6 -1
  3. data/config/jeweler.rb +1 -3
  4. data/lib/cloud_providers/cloud_provider_instance.rb +11 -1
  5. data/lib/dependency_resolvers/chef/resources/chef_recipe.rb +51 -0
  6. data/lib/dependency_resolvers/chef.rb +12 -3
  7. data/lib/mixins/callbacks.rb +6 -2
  8. data/lib/poolparty/plugins/apache2/passenger_site.rb +2 -2
  9. data/test/fixtures/chef/recipes/sudo/attributes/sudoers.rb +30 -0
  10. data/test/fixtures/chef/recipes/sudo/recipes/default.rb +33 -0
  11. data/test/fixtures/chef/recipes/sudo/templates/default/sudoers.erb +22 -0
  12. data/test/lib/dependency_resolvers/chef/resources/chef_recipe_test.rb +21 -0
  13. data/test/lib/dependency_resolvers/chef_test.rb +8 -1
  14. data/vendor/gems/thrift/CHANGELOG +1 -0
  15. data/vendor/gems/thrift/Makefile.am +25 -6
  16. data/vendor/gems/thrift/Manifest +81 -0
  17. data/vendor/gems/thrift/README +17 -111
  18. data/vendor/gems/thrift/Rakefile +104 -0
  19. data/vendor/gems/thrift/{lib/hs/Setup.lhs → benchmark/Benchmark.thrift} +5 -4
  20. data/vendor/gems/thrift/benchmark/benchmark.rb +271 -0
  21. data/vendor/gems/thrift/benchmark/client.rb +74 -0
  22. data/vendor/gems/thrift/benchmark/server.rb +82 -0
  23. data/vendor/gems/thrift/benchmark/thin_server.rb +44 -0
  24. data/vendor/gems/thrift/ext/binary_protocol_accelerated.c +474 -0
  25. data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.m → ext/binary_protocol_accelerated.h} +1 -4
  26. data/vendor/gems/thrift/ext/compact_protocol.c +665 -0
  27. data/vendor/gems/thrift/{lib/cocoa/src/protocol/TProtocolException.h → ext/compact_protocol.h} +1 -6
  28. data/vendor/gems/thrift/ext/constants.h +95 -0
  29. data/vendor/gems/thrift/{contrib/fb303/Makefile.am → ext/extconf.rb} +8 -13
  30. data/vendor/gems/thrift/{compiler/cpp/src/platform.h → ext/macros.h} +18 -13
  31. data/vendor/gems/thrift/ext/memory_buffer.c +76 -0
  32. data/vendor/gems/thrift/{lib/csharp/src/Protocol/TMessageType.cs → ext/memory_buffer.h} +2 -13
  33. data/vendor/gems/thrift/ext/protocol.c +185 -0
  34. data/vendor/gems/thrift/{lib/csharp/src/TProcessor.cs → ext/protocol.h} +2 -11
  35. data/vendor/gems/thrift/ext/struct.c +606 -0
  36. data/vendor/gems/thrift/ext/struct.h +67 -0
  37. data/vendor/gems/thrift/ext/thrift_native.c +194 -0
  38. data/vendor/gems/thrift/lib/thrift/client.rb +62 -0
  39. data/vendor/gems/thrift/{contrib/fb303/py/fb303_scripts/__init__.py → lib/thrift/core_ext/fixnum.rb} +13 -4
  40. data/vendor/gems/thrift/{contrib/fb303/global_footer.mk → lib/thrift/core_ext.rb} +4 -2
  41. data/vendor/gems/thrift/lib/thrift/exceptions.rb +82 -0
  42. data/vendor/gems/thrift/lib/thrift/processor.rb +57 -0
  43. data/vendor/gems/thrift/lib/thrift/protocol/base_protocol.rb +290 -0
  44. data/vendor/gems/thrift/lib/thrift/protocol/binary_protocol.rb +225 -0
  45. data/vendor/gems/thrift/{cleanup.sh → lib/thrift/protocol/binary_protocol_accelerated.rb} +19 -42
  46. data/vendor/gems/thrift/lib/thrift/protocol/compact_protocol.rb +422 -0
  47. data/vendor/gems/thrift/lib/thrift/serializer/deserializer.rb +33 -0
  48. data/vendor/gems/thrift/{bootstrap.sh → lib/thrift/serializer/serializer.rb} +17 -18
  49. data/vendor/gems/thrift/lib/thrift/server/base_server.rb +31 -0
  50. data/vendor/gems/thrift/lib/thrift/server/mongrel_http_server.rb +58 -0
  51. data/vendor/gems/thrift/lib/thrift/server/nonblocking_server.rb +296 -0
  52. data/vendor/gems/thrift/lib/thrift/server/simple_server.rb +43 -0
  53. data/vendor/gems/thrift/lib/thrift/server/thread_pool_server.rb +75 -0
  54. data/vendor/gems/thrift/lib/thrift/server/threaded_server.rb +47 -0
  55. data/vendor/gems/thrift/lib/thrift/struct.rb +298 -0
  56. data/vendor/gems/thrift/{contrib/fb303/bootstrap.sh → lib/thrift/thrift_native.rb} +5 -7
  57. data/vendor/gems/thrift/lib/{erl/Makefile → thrift/transport/base_server_transport.rb} +20 -20
  58. data/vendor/gems/thrift/lib/thrift/transport/base_transport.rb +70 -0
  59. data/vendor/gems/thrift/lib/thrift/transport/buffered_transport.rb +77 -0
  60. data/vendor/gems/thrift/lib/thrift/transport/framed_transport.rb +90 -0
  61. data/vendor/gems/thrift/lib/thrift/transport/http_client_transport.rb +45 -0
  62. data/vendor/gems/thrift/lib/thrift/transport/io_stream_transport.rb +39 -0
  63. data/vendor/gems/thrift/lib/thrift/transport/memory_buffer_transport.rb +96 -0
  64. data/vendor/gems/thrift/lib/thrift/transport/server_socket.rb +63 -0
  65. data/vendor/gems/thrift/lib/thrift/transport/socket.rb +136 -0
  66. data/vendor/gems/thrift/lib/{java/Makefile.am → thrift/transport/unix_server_socket.rb} +39 -17
  67. data/vendor/gems/thrift/{contrib/fb303/global_header.mk → lib/thrift/transport/unix_socket.rb} +23 -21
  68. data/vendor/gems/thrift/lib/thrift/types.rb +101 -0
  69. data/vendor/gems/thrift/lib/thrift.rb +59 -0
  70. data/vendor/gems/thrift/script/proto_benchmark.rb +121 -0
  71. data/vendor/gems/thrift/{lib/Makefile.am → script/read_struct.rb} +24 -36
  72. data/vendor/gems/thrift/{contrib/fb303/py/setup.py → script/write_struct.rb} +8 -5
  73. data/vendor/gems/thrift/setup.rb +1585 -0
  74. data/vendor/gems/thrift/spec/ThriftSpec.thrift +84 -0
  75. data/vendor/gems/thrift/spec/base_protocol_spec.rb +160 -0
  76. data/vendor/gems/thrift/spec/base_transport_spec.rb +351 -0
  77. data/vendor/gems/thrift/{contrib/fb303/py/Makefile.am → spec/binary_protocol_accelerated_spec.rb} +22 -25
  78. data/vendor/gems/thrift/spec/binary_protocol_spec.rb +63 -0
  79. data/vendor/gems/thrift/spec/binary_protocol_spec_shared.rb +375 -0
  80. data/vendor/gems/thrift/spec/client_spec.rb +100 -0
  81. data/vendor/gems/thrift/spec/compact_protocol_spec.rb +117 -0
  82. data/vendor/gems/thrift/spec/exception_spec.rb +142 -0
  83. data/vendor/gems/thrift/spec/http_client_spec.rb +49 -0
  84. data/vendor/gems/thrift/spec/mongrel_http_server_spec.rb +117 -0
  85. data/vendor/gems/thrift/spec/nonblocking_server_spec.rb +265 -0
  86. data/vendor/gems/thrift/spec/processor_spec.rb +83 -0
  87. data/vendor/gems/thrift/spec/serializer_spec.rb +69 -0
  88. data/vendor/gems/thrift/spec/server_socket_spec.rb +80 -0
  89. data/vendor/gems/thrift/spec/server_spec.rb +160 -0
  90. data/vendor/gems/thrift/spec/socket_spec.rb +61 -0
  91. data/vendor/gems/thrift/spec/socket_spec_shared.rb +104 -0
  92. data/vendor/gems/thrift/spec/spec_helper.rb +60 -0
  93. data/vendor/gems/thrift/spec/struct_spec.rb +252 -0
  94. data/vendor/gems/thrift/spec/types_spec.rb +116 -0
  95. data/vendor/gems/thrift/spec/unix_socket_spec.rb +108 -0
  96. data/vendor/gems/trollop/FAQ.txt +84 -0
  97. data/vendor/gems/trollop/History.txt +101 -0
  98. data/vendor/gems/trollop/Manifest.txt +7 -0
  99. data/vendor/gems/trollop/README.txt +40 -0
  100. data/vendor/gems/trollop/Rakefile +36 -0
  101. data/vendor/gems/trollop/lib/trollop.rb +739 -0
  102. data/vendor/gems/trollop/release-script.txt +13 -0
  103. data/vendor/gems/trollop/test/test_trollop.rb +1048 -0
  104. data/vendor/gems/trollop/www/index.html +172 -0
  105. metadata +123 -347
  106. data/vendor/gems/thrift/CHANGES +0 -35
  107. data/vendor/gems/thrift/CONTRIBUTORS +0 -77
  108. data/vendor/gems/thrift/DISCLAIMER +0 -6
  109. data/vendor/gems/thrift/LICENSE +0 -202
  110. data/vendor/gems/thrift/NEWS +0 -79
  111. data/vendor/gems/thrift/NOTICE +0 -26
  112. data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +0 -198
  113. data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +0 -107
  114. data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +0 -194
  115. data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +0 -173
  116. data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +0 -127
  117. data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +0 -39
  118. data/vendor/gems/thrift/compiler/cpp/Makefile.am +0 -136
  119. data/vendor/gems/thrift/compiler/cpp/README +0 -39
  120. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +0 -2331
  121. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +0 -3003
  122. data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +0 -1700
  123. data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +0 -932
  124. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +0 -173
  125. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +0 -321
  126. data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +0 -1445
  127. data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +0 -637
  128. data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +0 -3069
  129. data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +0 -1673
  130. data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +0 -77
  131. data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +0 -1812
  132. data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +0 -2281
  133. data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +0 -2310
  134. data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +0 -1114
  135. data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +0 -1071
  136. data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +0 -354
  137. data/vendor/gems/thrift/compiler/cpp/src/globals.h +0 -117
  138. data/vendor/gems/thrift/compiler/cpp/src/main.cc +0 -1207
  139. data/vendor/gems/thrift/compiler/cpp/src/main.h +0 -103
  140. data/vendor/gems/thrift/compiler/cpp/src/md5.c +0 -381
  141. data/vendor/gems/thrift/compiler/cpp/src/md5.h +0 -91
  142. data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +0 -137
  143. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +0 -59
  144. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +0 -121
  145. data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +0 -56
  146. data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +0 -51
  147. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +0 -59
  148. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +0 -64
  149. data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +0 -150
  150. data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +0 -93
  151. data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +0 -56
  152. data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +0 -64
  153. data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +0 -223
  154. data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +0 -86
  155. data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +0 -68
  156. data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +0 -55
  157. data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +0 -127
  158. data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +0 -176
  159. data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +0 -70
  160. data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +0 -303
  161. data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +0 -1140
  162. data/vendor/gems/thrift/configure.ac +0 -255
  163. data/vendor/gems/thrift/contrib/fb303/LICENSE +0 -16
  164. data/vendor/gems/thrift/contrib/fb303/README +0 -37
  165. data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +0 -258
  166. data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +0 -198
  167. data/vendor/gems/thrift/contrib/fb303/configure.ac +0 -115
  168. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +0 -124
  169. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +0 -103
  170. data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +0 -84
  171. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +0 -481
  172. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +0 -215
  173. data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +0 -112
  174. data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +0 -103
  175. data/vendor/gems/thrift/contrib/fb303/java/build.xml +0 -84
  176. data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +0 -89
  177. data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +0 -82
  178. data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +0 -195
  179. data/vendor/gems/thrift/contrib/thrift.el +0 -126
  180. data/vendor/gems/thrift/contrib/thrift.spec +0 -206
  181. data/vendor/gems/thrift/contrib/thrift.vim +0 -91
  182. data/vendor/gems/thrift/contrib/thrift_dump.cpp +0 -91
  183. data/vendor/gems/thrift/doc/lgpl-2.1.txt +0 -504
  184. data/vendor/gems/thrift/doc/otp-base-license.txt +0 -20
  185. data/vendor/gems/thrift/doc/thrift.bnf +0 -96
  186. data/vendor/gems/thrift/doc/thrift.tex +0 -1057
  187. data/vendor/gems/thrift/lib/cocoa/README +0 -21
  188. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +0 -44
  189. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +0 -130
  190. data/vendor/gems/thrift/lib/cocoa/src/TException.h +0 -34
  191. data/vendor/gems/thrift/lib/cocoa/src/TException.m +0 -64
  192. data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +0 -29
  193. data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +0 -27
  194. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +0 -27
  195. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +0 -51
  196. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +0 -51
  197. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +0 -477
  198. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +0 -148
  199. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +0 -29
  200. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +0 -29
  201. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +0 -104
  202. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +0 -50
  203. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +0 -153
  204. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +0 -42
  205. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +0 -159
  206. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +0 -35
  207. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +0 -91
  208. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +0 -38
  209. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +0 -89
  210. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +0 -32
  211. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +0 -58
  212. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +0 -36
  213. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +0 -30
  214. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +0 -43
  215. data/vendor/gems/thrift/lib/cpp/Makefile.am +0 -158
  216. data/vendor/gems/thrift/lib/cpp/README +0 -67
  217. data/vendor/gems/thrift/lib/cpp/src/TLogging.h +0 -163
  218. data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +0 -53
  219. data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +0 -96
  220. data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +0 -148
  221. data/vendor/gems/thrift/lib/cpp/src/Thrift.h +0 -191
  222. data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +0 -60
  223. data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +0 -77
  224. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +0 -137
  225. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +0 -84
  226. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +0 -160
  227. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +0 -114
  228. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +0 -314
  229. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +0 -130
  230. data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +0 -125
  231. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +0 -493
  232. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +0 -169
  233. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +0 -284
  234. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +0 -122
  235. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +0 -55
  236. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +0 -100
  237. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +0 -155
  238. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +0 -354
  239. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +0 -379
  240. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +0 -155
  241. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +0 -122
  242. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +0 -77
  243. data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +0 -264
  244. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +0 -79
  245. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +0 -42
  246. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +0 -394
  247. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +0 -254
  248. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +0 -736
  249. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +0 -279
  250. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +0 -346
  251. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +0 -225
  252. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +0 -762
  253. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +0 -253
  254. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +0 -998
  255. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +0 -340
  256. data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +0 -304
  257. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +0 -438
  258. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +0 -104
  259. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +0 -187
  260. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +0 -750
  261. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +0 -435
  262. data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +0 -38
  263. data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +0 -213
  264. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +0 -118
  265. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +0 -70
  266. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +0 -217
  267. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +0 -79
  268. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +0 -243
  269. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +0 -74
  270. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +0 -370
  271. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +0 -667
  272. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +0 -77
  273. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +0 -73
  274. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +0 -953
  275. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +0 -442
  276. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +0 -348
  277. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +0 -111
  278. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +0 -368
  279. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +0 -76
  280. data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +0 -92
  281. data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +0 -96
  282. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +0 -54
  283. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +0 -41
  284. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +0 -591
  285. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +0 -242
  286. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +0 -235
  287. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +0 -191
  288. data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +0 -224
  289. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +0 -31
  290. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +0 -117
  291. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +0 -178
  292. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +0 -287
  293. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +0 -299
  294. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +0 -219
  295. data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +0 -30
  296. data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +0 -30
  297. data/vendor/gems/thrift/lib/cpp/thrift.pc.in +0 -29
  298. data/vendor/gems/thrift/lib/csharp/Makefile.am +0 -70
  299. data/vendor/gems/thrift/lib/csharp/README +0 -26
  300. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +0 -55
  301. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +0 -242
  302. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +0 -62
  303. data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +0 -142
  304. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +0 -34
  305. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +0 -392
  306. data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +0 -58
  307. data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +0 -50
  308. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +0 -58
  309. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +0 -58
  310. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +0 -87
  311. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +0 -61
  312. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +0 -29
  313. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +0 -94
  314. data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +0 -50
  315. data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +0 -42
  316. data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +0 -40
  317. data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +0 -135
  318. data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +0 -148
  319. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +0 -186
  320. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +0 -234
  321. data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +0 -131
  322. data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +0 -73
  323. data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +0 -35
  324. data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +0 -100
  325. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +0 -157
  326. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +0 -39
  327. data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +0 -144
  328. data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +0 -103
  329. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +0 -66
  330. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +0 -64
  331. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +0 -38
  332. data/vendor/gems/thrift/lib/erl/README +0 -56
  333. data/vendor/gems/thrift/lib/erl/build/beamver +0 -59
  334. data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +0 -15
  335. data/vendor/gems/thrift/lib/erl/build/colors.mk +0 -24
  336. data/vendor/gems/thrift/lib/erl/build/docs.mk +0 -12
  337. data/vendor/gems/thrift/lib/erl/build/mime.types +0 -98
  338. data/vendor/gems/thrift/lib/erl/build/otp.mk +0 -146
  339. data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +0 -85
  340. data/vendor/gems/thrift/lib/erl/build/raw_test.mk +0 -29
  341. data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +0 -54
  342. data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +0 -31
  343. data/vendor/gems/thrift/lib/erl/src/Makefile +0 -116
  344. data/vendor/gems/thrift/lib/erl/src/test_handler.erl +0 -26
  345. data/vendor/gems/thrift/lib/erl/src/test_service.erl +0 -29
  346. data/vendor/gems/thrift/lib/erl/src/thrift.app.src +0 -44
  347. data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +0 -1
  348. data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +0 -64
  349. data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +0 -325
  350. data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +0 -180
  351. data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +0 -384
  352. data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +0 -118
  353. data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +0 -87
  354. data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +0 -208
  355. data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +0 -199
  356. data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +0 -164
  357. data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +0 -188
  358. data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +0 -356
  359. data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +0 -183
  360. data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +0 -25
  361. data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +0 -249
  362. data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +0 -119
  363. data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +0 -57
  364. data/vendor/gems/thrift/lib/erl/vsn.mk +0 -1
  365. data/vendor/gems/thrift/lib/hs/README +0 -82
  366. data/vendor/gems/thrift/lib/hs/TODO +0 -2
  367. data/vendor/gems/thrift/lib/hs/Thrift.cabal +0 -20
  368. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +0 -147
  369. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +0 -191
  370. data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +0 -65
  371. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +0 -58
  372. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +0 -60
  373. data/vendor/gems/thrift/lib/hs/src/Thrift.hs +0 -111
  374. data/vendor/gems/thrift/lib/java/README +0 -43
  375. data/vendor/gems/thrift/lib/java/build.xml +0 -195
  376. data/vendor/gems/thrift/lib/java/ivy.xml +0 -8
  377. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +0 -171
  378. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +0 -123
  379. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +0 -66
  380. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +0 -102
  381. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +0 -46
  382. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +0 -94
  383. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +0 -45
  384. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +0 -30
  385. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +0 -32
  386. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +0 -39
  387. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +0 -110
  388. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +0 -69
  389. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +0 -42
  390. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +0 -29
  391. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +0 -31
  392. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +0 -29
  393. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +0 -31
  394. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +0 -128
  395. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +0 -331
  396. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +0 -741
  397. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +0 -48
  398. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +0 -927
  399. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +0 -38
  400. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +0 -40
  401. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +0 -48
  402. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +0 -31
  403. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +0 -146
  404. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +0 -81
  405. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +0 -30
  406. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +0 -158
  407. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +0 -42
  408. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +0 -384
  409. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +0 -36
  410. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +0 -40
  411. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +0 -304
  412. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +0 -772
  413. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +0 -126
  414. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +0 -145
  415. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +0 -271
  416. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +0 -126
  417. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +0 -157
  418. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +0 -159
  419. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +0 -98
  420. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +0 -160
  421. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +0 -31
  422. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +0 -213
  423. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +0 -31
  424. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +0 -145
@@ -1,772 +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
-
21
- package org.apache.thrift.server;
22
-
23
- import java.io.ByteArrayInputStream;
24
- import java.io.IOException;
25
- import java.nio.ByteBuffer;
26
- import java.nio.channels.SelectionKey;
27
- import java.nio.channels.Selector;
28
- import java.nio.channels.spi.SelectorProvider;
29
- import java.util.HashSet;
30
- import java.util.Iterator;
31
- import java.util.Set;
32
-
33
- import org.slf4j.Logger;
34
- import org.slf4j.LoggerFactory;
35
-
36
- import org.apache.thrift.TByteArrayOutputStream;
37
- import org.apache.thrift.TException;
38
- import org.apache.thrift.TProcessor;
39
- import org.apache.thrift.TProcessorFactory;
40
- import org.apache.thrift.protocol.TBinaryProtocol;
41
- import org.apache.thrift.protocol.TProtocol;
42
- import org.apache.thrift.protocol.TProtocolFactory;
43
- import org.apache.thrift.transport.TFramedTransport;
44
- import org.apache.thrift.transport.TIOStreamTransport;
45
- import org.apache.thrift.transport.TNonblockingServerTransport;
46
- import org.apache.thrift.transport.TNonblockingTransport;
47
- import org.apache.thrift.transport.TTransport;
48
- import org.apache.thrift.transport.TTransportException;
49
-
50
- /**
51
- * A nonblocking TServer implementation. This allows for fairness amongst all
52
- * connected clients in terms of invocations.
53
- *
54
- * This server is inherently single-threaded. If you want a limited thread pool
55
- * coupled with invocation-fairness, see THsHaServer.
56
- *
57
- * To use this server, you MUST use a TFramedTransport at the outermost
58
- * transport, otherwise this server will be unable to determine when a whole
59
- * method call has been read off the wire. Clients must also use TFramedTransport.
60
- */
61
- public class TNonblockingServer extends TServer {
62
- private static final Logger LOGGER =
63
- LoggerFactory.getLogger(TNonblockingServer.class.getName());
64
-
65
- // Flag for stopping the server
66
- private volatile boolean stopped_;
67
-
68
- private SelectThread selectThread_;
69
-
70
- /**
71
- * The maximum amount of memory we will allocate to client IO buffers at a
72
- * time. Without this limit, the server will gladly allocate client buffers
73
- * right into an out of memory exception, rather than waiting.
74
- */
75
- private final long MAX_READ_BUFFER_BYTES;
76
-
77
- protected final Options options_;
78
-
79
- /**
80
- * How many bytes are currently allocated to read buffers.
81
- */
82
- private long readBufferBytesAllocated = 0;
83
-
84
- /**
85
- * Create server with given processor and server transport, using
86
- * TBinaryProtocol for the protocol, TFramedTransport.Factory on both input
87
- * and output transports. A TProcessorFactory will be created that always
88
- * returns the specified processor.
89
- */
90
- public TNonblockingServer(TProcessor processor,
91
- TNonblockingServerTransport serverTransport) {
92
- this(new TProcessorFactory(processor), serverTransport);
93
- }
94
-
95
- /**
96
- * Create server with specified processor factory and server transport.
97
- * TBinaryProtocol is assumed. TFramedTransport.Factory is used on both input
98
- * and output transports.
99
- */
100
- public TNonblockingServer(TProcessorFactory processorFactory,
101
- TNonblockingServerTransport serverTransport) {
102
- this(processorFactory, serverTransport,
103
- new TFramedTransport.Factory(), new TFramedTransport.Factory(),
104
- new TBinaryProtocol.Factory(), new TBinaryProtocol.Factory());
105
- }
106
-
107
- public TNonblockingServer(TProcessor processor,
108
- TNonblockingServerTransport serverTransport,
109
- TProtocolFactory protocolFactory) {
110
- this(processor, serverTransport,
111
- new TFramedTransport.Factory(), new TFramedTransport.Factory(),
112
- protocolFactory, protocolFactory);
113
- }
114
-
115
- public TNonblockingServer(TProcessor processor,
116
- TNonblockingServerTransport serverTransport,
117
- TFramedTransport.Factory transportFactory,
118
- TProtocolFactory protocolFactory) {
119
- this(processor, serverTransport,
120
- transportFactory, transportFactory,
121
- protocolFactory, protocolFactory);
122
- }
123
-
124
- public TNonblockingServer(TProcessorFactory processorFactory,
125
- TNonblockingServerTransport serverTransport,
126
- TFramedTransport.Factory transportFactory,
127
- TProtocolFactory protocolFactory) {
128
- this(processorFactory, serverTransport,
129
- transportFactory, transportFactory,
130
- protocolFactory, protocolFactory);
131
- }
132
-
133
- public TNonblockingServer(TProcessor processor,
134
- TNonblockingServerTransport serverTransport,
135
- TFramedTransport.Factory inputTransportFactory,
136
- TFramedTransport.Factory outputTransportFactory,
137
- TProtocolFactory inputProtocolFactory,
138
- TProtocolFactory outputProtocolFactory) {
139
- this(new TProcessorFactory(processor), serverTransport,
140
- inputTransportFactory, outputTransportFactory,
141
- inputProtocolFactory, outputProtocolFactory);
142
- }
143
-
144
- public TNonblockingServer(TProcessorFactory processorFactory,
145
- TNonblockingServerTransport serverTransport,
146
- TFramedTransport.Factory inputTransportFactory,
147
- TFramedTransport.Factory outputTransportFactory,
148
- TProtocolFactory inputProtocolFactory,
149
- TProtocolFactory outputProtocolFactory) {
150
- this(processorFactory, serverTransport,
151
- inputTransportFactory, outputTransportFactory,
152
- inputProtocolFactory, outputProtocolFactory,
153
- new Options());
154
- }
155
-
156
- public TNonblockingServer(TProcessorFactory processorFactory,
157
- TNonblockingServerTransport serverTransport,
158
- TFramedTransport.Factory inputTransportFactory,
159
- TFramedTransport.Factory outputTransportFactory,
160
- TProtocolFactory inputProtocolFactory,
161
- TProtocolFactory outputProtocolFactory,
162
- Options options) {
163
- super(processorFactory, serverTransport,
164
- inputTransportFactory, outputTransportFactory,
165
- inputProtocolFactory, outputProtocolFactory);
166
- options_ = options;
167
- options_.validate();
168
- MAX_READ_BUFFER_BYTES = options.maxReadBufferBytes;
169
- }
170
-
171
- /**
172
- * Begin accepting connections and processing invocations.
173
- */
174
- public void serve() {
175
- // start listening, or exit
176
- if (!startListening()) {
177
- return;
178
- }
179
-
180
- // start the selector, or exit
181
- if (!startSelectorThread()) {
182
- return;
183
- }
184
-
185
- // this will block while we serve
186
- joinSelector();
187
-
188
- // do a little cleanup
189
- stopListening();
190
- }
191
-
192
- /**
193
- * Have the server transport start accepting connections.
194
- *
195
- * @return true if we started listening successfully, false if something went
196
- * wrong.
197
- */
198
- protected boolean startListening() {
199
- try {
200
- serverTransport_.listen();
201
- return true;
202
- } catch (TTransportException ttx) {
203
- LOGGER.error("Failed to start listening on server socket!", ttx);
204
- return false;
205
- }
206
- }
207
-
208
- /**
209
- * Stop listening for conections.
210
- */
211
- protected void stopListening() {
212
- serverTransport_.close();
213
- }
214
-
215
- /**
216
- * Start the selector thread running to deal with clients.
217
- *
218
- * @return true if everything went ok, false if we couldn't start for some
219
- * reason.
220
- */
221
- protected boolean startSelectorThread() {
222
- // start the selector
223
- try {
224
- selectThread_ = new SelectThread((TNonblockingServerTransport)serverTransport_);
225
- selectThread_.start();
226
- return true;
227
- } catch (IOException e) {
228
- LOGGER.error("Failed to start selector thread!", e);
229
- return false;
230
- }
231
- }
232
-
233
- /**
234
- * Block until the selector exits.
235
- */
236
- protected void joinSelector() {
237
- // wait until the selector thread exits
238
- try {
239
- selectThread_.join();
240
- } catch (InterruptedException e) {
241
- // for now, just silently ignore. technically this means we'll have less of
242
- // a graceful shutdown as a result.
243
- }
244
- }
245
-
246
- /**
247
- * Stop serving and shut everything down.
248
- */
249
- public void stop() {
250
- stopped_ = true;
251
- if (selectThread_ != null) {
252
- selectThread_.wakeupSelector();
253
- }
254
- }
255
-
256
- /**
257
- * Perform an invocation. This method could behave several different ways
258
- * - invoke immediately inline, queue for separate execution, etc.
259
- */
260
- protected void requestInvoke(FrameBuffer frameBuffer) {
261
- frameBuffer.invoke();
262
- }
263
-
264
- /**
265
- * A FrameBuffer wants to change its selection preferences, but might not be
266
- * in the select thread.
267
- */
268
- protected void requestSelectInterestChange(FrameBuffer frameBuffer) {
269
- selectThread_.requestSelectInterestChange(frameBuffer);
270
- }
271
-
272
- /**
273
- * The thread that will be doing all the selecting, managing new connections
274
- * and those that still need to be read.
275
- */
276
- protected class SelectThread extends Thread {
277
-
278
- private final TNonblockingServerTransport serverTransport;
279
- private final Selector selector;
280
-
281
- // List of FrameBuffers that want to change their selection interests.
282
- private final Set<FrameBuffer> selectInterestChanges =
283
- new HashSet<FrameBuffer>();
284
-
285
- /**
286
- * Set up the SelectorThread.
287
- */
288
- public SelectThread(final TNonblockingServerTransport serverTransport)
289
- throws IOException {
290
- this.serverTransport = serverTransport;
291
- this.selector = SelectorProvider.provider().openSelector();
292
- serverTransport.registerSelector(selector);
293
- }
294
-
295
- /**
296
- * The work loop. Handles both selecting (all IO operations) and managing
297
- * the selection preferences of all existing connections.
298
- */
299
- public void run() {
300
- while (!stopped_) {
301
- select();
302
- processInterestChanges();
303
- }
304
- }
305
-
306
- /**
307
- * If the selector is blocked, wake it up.
308
- */
309
- public void wakeupSelector() {
310
- selector.wakeup();
311
- }
312
-
313
- /**
314
- * Add FrameBuffer to the list of select interest changes and wake up the
315
- * selector if it's blocked. When the select() call exits, it'll give the
316
- * FrameBuffer a chance to change its interests.
317
- */
318
- public void requestSelectInterestChange(FrameBuffer frameBuffer) {
319
- synchronized (selectInterestChanges) {
320
- selectInterestChanges.add(frameBuffer);
321
- }
322
- // wakeup the selector, if it's currently blocked.
323
- selector.wakeup();
324
- }
325
-
326
- /**
327
- * Select and process IO events appropriately:
328
- * If there are connections to be accepted, accept them.
329
- * If there are existing connections with data waiting to be read, read it,
330
- * bufferring until a whole frame has been read.
331
- * If there are any pending responses, buffer them until their target client
332
- * is available, and then send the data.
333
- */
334
- private void select() {
335
- try {
336
- // wait for io events.
337
- selector.select();
338
-
339
- // process the io events we received
340
- Iterator<SelectionKey> selectedKeys = selector.selectedKeys().iterator();
341
- while (!stopped_ && selectedKeys.hasNext()) {
342
- SelectionKey key = selectedKeys.next();
343
- selectedKeys.remove();
344
-
345
- // skip if not valid
346
- if (!key.isValid()) {
347
- cleanupSelectionkey(key);
348
- continue;
349
- }
350
-
351
- // if the key is marked Accept, then it has to be the server
352
- // transport.
353
- if (key.isAcceptable()) {
354
- handleAccept();
355
- } else if (key.isReadable()) {
356
- // deal with reads
357
- handleRead(key);
358
- } else if (key.isWritable()) {
359
- // deal with writes
360
- handleWrite(key);
361
- } else {
362
- LOGGER.warn("Unexpected state in select! " + key.interestOps());
363
- }
364
- }
365
- } catch (IOException e) {
366
- LOGGER.warn("Got an IOException while selecting!", e);
367
- }
368
- }
369
-
370
- /**
371
- * Check to see if there are any FrameBuffers that have switched their
372
- * interest type from read to write or vice versa.
373
- */
374
- private void processInterestChanges() {
375
- synchronized (selectInterestChanges) {
376
- for (FrameBuffer fb : selectInterestChanges) {
377
- fb.changeSelectInterests();
378
- }
379
- selectInterestChanges.clear();
380
- }
381
- }
382
-
383
- /**
384
- * Accept a new connection.
385
- */
386
- private void handleAccept() throws IOException {
387
- SelectionKey clientKey = null;
388
- TNonblockingTransport client = null;
389
- try {
390
- // accept the connection
391
- client = (TNonblockingTransport)serverTransport.accept();
392
- clientKey = client.registerSelector(selector, SelectionKey.OP_READ);
393
-
394
- // add this key to the map
395
- FrameBuffer frameBuffer = new FrameBuffer(client, clientKey);
396
- clientKey.attach(frameBuffer);
397
- } catch (TTransportException tte) {
398
- // something went wrong accepting.
399
- LOGGER.warn("Exception trying to accept!", tte);
400
- tte.printStackTrace();
401
- if (clientKey != null) cleanupSelectionkey(clientKey);
402
- if (client != null) client.close();
403
- }
404
- }
405
-
406
- /**
407
- * Do the work required to read from a readable client. If the frame is
408
- * fully read, then invoke the method call.
409
- */
410
- private void handleRead(SelectionKey key) {
411
- FrameBuffer buffer = (FrameBuffer)key.attachment();
412
- if (buffer.read()) {
413
- // if the buffer's frame read is complete, invoke the method.
414
- if (buffer.isFrameFullyRead()) {
415
- requestInvoke(buffer);
416
- }
417
- } else {
418
- cleanupSelectionkey(key);
419
- }
420
- }
421
-
422
- /**
423
- * Let a writable client get written, if there's data to be written.
424
- */
425
- private void handleWrite(SelectionKey key) {
426
- FrameBuffer buffer = (FrameBuffer)key.attachment();
427
- if (!buffer.write()) {
428
- cleanupSelectionkey(key);
429
- }
430
- }
431
-
432
- /**
433
- * Do connection-close cleanup on a given SelectionKey.
434
- */
435
- private void cleanupSelectionkey(SelectionKey key) {
436
- // remove the records from the two maps
437
- FrameBuffer buffer = (FrameBuffer)key.attachment();
438
- if (buffer != null) {
439
- // close the buffer
440
- buffer.close();
441
- }
442
- // cancel the selection key
443
- key.cancel();
444
- }
445
- } // SelectorThread
446
-
447
- /**
448
- * Class that implements a sort of state machine around the interaction with
449
- * a client and an invoker. It manages reading the frame size and frame data,
450
- * getting it handed off as wrapped transports, and then the writing of
451
- * reponse data back to the client. In the process it manages flipping the
452
- * read and write bits on the selection key for its client.
453
- */
454
- protected class FrameBuffer {
455
- //
456
- // Possible states for the FrameBuffer state machine.
457
- //
458
- // in the midst of reading the frame size off the wire
459
- private static final int READING_FRAME_SIZE = 1;
460
- // reading the actual frame data now, but not all the way done yet
461
- private static final int READING_FRAME = 2;
462
- // completely read the frame, so an invocation can now happen
463
- private static final int READ_FRAME_COMPLETE = 3;
464
- // waiting to get switched to listening for write events
465
- private static final int AWAITING_REGISTER_WRITE = 4;
466
- // started writing response data, not fully complete yet
467
- private static final int WRITING = 6;
468
- // another thread wants this framebuffer to go back to reading
469
- private static final int AWAITING_REGISTER_READ = 7;
470
- // we want our transport and selection key invalidated in the selector thread
471
- private static final int AWAITING_CLOSE = 8;
472
-
473
- //
474
- // Instance variables
475
- //
476
-
477
- // the actual transport hooked up to the client.
478
- private final TNonblockingTransport trans_;
479
-
480
- // the SelectionKey that corresponds to our transport
481
- private final SelectionKey selectionKey_;
482
-
483
- // where in the process of reading/writing are we?
484
- private int state_ = READING_FRAME_SIZE;
485
-
486
- // the ByteBuffer we'll be using to write and read, depending on the state
487
- private ByteBuffer buffer_;
488
-
489
- private TByteArrayOutputStream response_;
490
-
491
- public FrameBuffer( final TNonblockingTransport trans,
492
- final SelectionKey selectionKey) {
493
- trans_ = trans;
494
- selectionKey_ = selectionKey;
495
- buffer_ = ByteBuffer.allocate(4);
496
- }
497
-
498
- /**
499
- * Give this FrameBuffer a chance to read. The selector loop should have
500
- * received a read event for this FrameBuffer.
501
- *
502
- * @return true if the connection should live on, false if it should be
503
- * closed
504
- */
505
- public boolean read() {
506
- if (state_ == READING_FRAME_SIZE) {
507
- // try to read the frame size completely
508
- if (!internalRead()) {
509
- return false;
510
- }
511
-
512
- // if the frame size has been read completely, then prepare to read the
513
- // actual frame.
514
- if (buffer_.remaining() == 0) {
515
- // pull out the frame size as an integer.
516
- int frameSize = buffer_.getInt(0);
517
- if (frameSize <= 0) {
518
- LOGGER.error("Read an invalid frame size of " + frameSize
519
- + ". Are you using TFramedTransport on the client side?");
520
- return false;
521
- }
522
-
523
- // if this frame will always be too large for this server, log the
524
- // error and close the connection.
525
- if (frameSize + 4 > MAX_READ_BUFFER_BYTES) {
526
- LOGGER.error("Read a frame size of " + frameSize
527
- + ", which is bigger than the maximum allowable buffer size for ALL connections.");
528
- return false;
529
- }
530
-
531
- // if this frame will push us over the memory limit, then return.
532
- // with luck, more memory will free up the next time around.
533
- if (readBufferBytesAllocated + frameSize + 4 > MAX_READ_BUFFER_BYTES) {
534
- return true;
535
- }
536
-
537
- // incremement the amount of memory allocated to read buffers
538
- readBufferBytesAllocated += frameSize + 4;
539
-
540
- // reallocate the readbuffer as a frame-sized buffer
541
- buffer_ = ByteBuffer.allocate(frameSize + 4);
542
- // put the frame size at the head of the buffer
543
- buffer_.putInt(frameSize);
544
-
545
- state_ = READING_FRAME;
546
- } else {
547
- // this skips the check of READING_FRAME state below, since we can't
548
- // possibly go on to that state if there's data left to be read at
549
- // this one.
550
- return true;
551
- }
552
- }
553
-
554
- // it is possible to fall through from the READING_FRAME_SIZE section
555
- // to READING_FRAME if there's already some frame data available once
556
- // READING_FRAME_SIZE is complete.
557
-
558
- if (state_ == READING_FRAME) {
559
- if (!internalRead()) {
560
- return false;
561
- }
562
-
563
- // since we're already in the select loop here for sure, we can just
564
- // modify our selection key directly.
565
- if (buffer_.remaining() == 0) {
566
- // get rid of the read select interests
567
- selectionKey_.interestOps(0);
568
- state_ = READ_FRAME_COMPLETE;
569
- }
570
-
571
- return true;
572
- }
573
-
574
- // if we fall through to this point, then the state must be invalid.
575
- LOGGER.error("Read was called but state is invalid (" + state_ + ")");
576
- return false;
577
- }
578
-
579
- /**
580
- * Give this FrameBuffer a chance to write its output to the final client.
581
- */
582
- public boolean write() {
583
- if (state_ == WRITING) {
584
- try {
585
- if (trans_.write(buffer_) < 0) {
586
- return false;
587
- }
588
- } catch (IOException e) {
589
- LOGGER.warn("Got an IOException during write!", e);
590
- return false;
591
- }
592
-
593
- // we're done writing. now we need to switch back to reading.
594
- if (buffer_.remaining() == 0) {
595
- prepareRead();
596
- }
597
- return true;
598
- }
599
-
600
- LOGGER.error("Write was called, but state is invalid (" + state_ + ")");
601
- return false;
602
- }
603
-
604
- /**
605
- * Give this FrameBuffer a chance to set its interest to write, once data
606
- * has come in.
607
- */
608
- public void changeSelectInterests() {
609
- if (state_ == AWAITING_REGISTER_WRITE) {
610
- // set the OP_WRITE interest
611
- selectionKey_.interestOps(SelectionKey.OP_WRITE);
612
- state_ = WRITING;
613
- } else if (state_ == AWAITING_REGISTER_READ) {
614
- prepareRead();
615
- } else if (state_ == AWAITING_CLOSE){
616
- close();
617
- selectionKey_.cancel();
618
- } else {
619
- LOGGER.error(
620
- "changeSelectInterest was called, but state is invalid ("
621
- + state_ + ")");
622
- }
623
- }
624
-
625
- /**
626
- * Shut the connection down.
627
- */
628
- public void close() {
629
- // if we're being closed due to an error, we might have allocated a
630
- // buffer that we need to subtract for our memory accounting.
631
- if (state_ == READING_FRAME || state_ == READ_FRAME_COMPLETE) {
632
- readBufferBytesAllocated -= buffer_.array().length;
633
- }
634
- trans_.close();
635
- }
636
-
637
- /**
638
- * Check if this FrameBuffer has a full frame read.
639
- */
640
- public boolean isFrameFullyRead() {
641
- return state_ == READ_FRAME_COMPLETE;
642
- }
643
-
644
- /**
645
- * After the processor has processed the invocation, whatever thread is
646
- * managing invocations should call this method on this FrameBuffer so we
647
- * know it's time to start trying to write again. Also, if it turns out
648
- * that there actually isn't any data in the response buffer, we'll skip
649
- * trying to write and instead go back to reading.
650
- */
651
- public void responseReady() {
652
- // the read buffer is definitely no longer in use, so we will decrement
653
- // our read buffer count. we do this here as well as in close because
654
- // we'd like to free this read memory up as quickly as possible for other
655
- // clients.
656
- readBufferBytesAllocated -= buffer_.array().length;
657
-
658
- if (response_.len() == 0) {
659
- // go straight to reading again. this was probably an oneway method
660
- state_ = AWAITING_REGISTER_READ;
661
- buffer_ = null;
662
- } else {
663
- buffer_ = ByteBuffer.wrap(response_.get(), 0, response_.len());
664
-
665
- // set state that we're waiting to be switched to write. we do this
666
- // asynchronously through requestSelectInterestChange() because there is a
667
- // possibility that we're not in the main thread, and thus currently
668
- // blocked in select(). (this functionality is in place for the sake of
669
- // the HsHa server.)
670
- state_ = AWAITING_REGISTER_WRITE;
671
- }
672
- requestSelectInterestChange();
673
- }
674
-
675
- /**
676
- * Actually invoke the method signified by this FrameBuffer.
677
- */
678
- public void invoke() {
679
- TTransport inTrans = getInputTransport();
680
- TProtocol inProt = inputProtocolFactory_.getProtocol(inTrans);
681
- TProtocol outProt = outputProtocolFactory_.getProtocol(getOutputTransport());
682
-
683
- try {
684
- processorFactory_.getProcessor(inTrans).process(inProt, outProt);
685
- responseReady();
686
- return;
687
- } catch (TException te) {
688
- LOGGER.warn("Exception while invoking!", te);
689
- } catch (Exception e) {
690
- LOGGER.error("Unexpected exception while invoking!", e);
691
- }
692
- // This will only be reached when there is an exception.
693
- state_ = AWAITING_CLOSE;
694
- requestSelectInterestChange();
695
- }
696
-
697
- /**
698
- * Wrap the read buffer in a memory-based transport so a processor can read
699
- * the data it needs to handle an invocation.
700
- */
701
- private TTransport getInputTransport() {
702
- return inputTransportFactory_.getTransport(new TIOStreamTransport(
703
- new ByteArrayInputStream(buffer_.array())));
704
- }
705
-
706
- /**
707
- * Get the transport that should be used by the invoker for responding.
708
- */
709
- private TTransport getOutputTransport() {
710
- response_ = new TByteArrayOutputStream();
711
- return outputTransportFactory_.getTransport(new TIOStreamTransport(response_));
712
- }
713
-
714
- /**
715
- * Perform a read into buffer.
716
- *
717
- * @return true if the read succeeded, false if there was an error or the
718
- * connection closed.
719
- */
720
- private boolean internalRead() {
721
- try {
722
- if (trans_.read(buffer_) < 0) {
723
- return false;
724
- }
725
- return true;
726
- } catch (IOException e) {
727
- LOGGER.warn("Got an IOException in internalRead!", e);
728
- return false;
729
- }
730
- }
731
-
732
- /**
733
- * We're done writing, so reset our interest ops and change state accordingly.
734
- */
735
- private void prepareRead() {
736
- // we can set our interest directly without using the queue because
737
- // we're in the select thread.
738
- selectionKey_.interestOps(SelectionKey.OP_READ);
739
- // get ready for another go-around
740
- buffer_ = ByteBuffer.allocate(4);
741
- state_ = READING_FRAME_SIZE;
742
- }
743
-
744
- /**
745
- * When this FrameBuffer needs to change it's select interests and execution
746
- * might not be in the select thread, then this method will make sure the
747
- * interest change gets done when the select thread wakes back up. When the
748
- * current thread is the select thread, then it just does the interest change
749
- * immediately.
750
- */
751
- private void requestSelectInterestChange() {
752
- if (Thread.currentThread() == selectThread_) {
753
- changeSelectInterests();
754
- } else {
755
- TNonblockingServer.this.requestSelectInterestChange(this);
756
- }
757
- }
758
- } // FrameBuffer
759
-
760
-
761
- public static class Options {
762
- public long maxReadBufferBytes = Long.MAX_VALUE;
763
-
764
- public Options() {}
765
-
766
- public void validate() {
767
- if (maxReadBufferBytes <= 1024) {
768
- throw new IllegalArgumentException("You must allocate at least 1KB to the read buffer.");
769
- }
770
- }
771
- }
772
- }