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,762 +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
-
22
- IMPLEMENTATION DETAILS
23
-
24
- TDenseProtocol was designed to have a smaller serialized form than
25
- TBinaryProtocol. This is accomplished using two techniques. The first is
26
- variable-length integer encoding. We use the same technique that the Standard
27
- MIDI File format uses for "variable-length quantities"
28
- (http://en.wikipedia.org/wiki/Variable-length_quantity).
29
- All integers (including i16, but not byte) are first cast to uint64_t,
30
- then written out as variable-length quantities. This has the unfortunate side
31
- effect that all negative numbers require 10 bytes, but negative numbers tend
32
- to be far less common than positive ones.
33
-
34
- The second technique eliminating the field ids used by TBinaryProtocol. This
35
- decision required support from the Thrift compiler and also sacrifices some of
36
- the backward and forward compatibility of TBinaryProtocol.
37
-
38
- We considered implementing this technique by generating separate readers and
39
- writers for the dense protocol (this is how Pillar, Thrift's predecessor,
40
- worked), but this idea had a few problems:
41
- - Our abstractions go out the window.
42
- - We would have to maintain a second code generator.
43
- - Preserving compatibility with old versions of the structures would be a
44
- nightmare.
45
-
46
- Therefore, we chose an alternate implementation that stored the description of
47
- the data neither in the data itself (like TBinaryProtocol) nor in the
48
- serialization code (like Pillar), but instead in a separate data structure,
49
- called a TypeSpec. TypeSpecs are generated by the Thrift compiler
50
- (specifically in the t_cpp_generator), and their structure should be
51
- documented there (TODO(dreiss): s/should be/is/).
52
-
53
- We maintain a stack of TypeSpecs within the protocol so it knows where the
54
- generated code is in the reading/writing process. For example, if we are
55
- writing an i32 contained in a struct bar, contained in a struct foo, then the
56
- stack would look like: TOP , i32 , struct bar , struct foo , BOTTOM.
57
- The following invariant: whenever we are about to read/write an object
58
- (structBegin, containerBegin, or a scalar), the TypeSpec on the top of the
59
- stack must match the type being read/written. The main reasons that this
60
- invariant must be maintained is that if we ever start reading a structure, we
61
- must have its exact TypeSpec in order to pass the right tags to the
62
- deserializer.
63
-
64
- We use the following strategies for maintaining this invariant:
65
-
66
- - For structures, we have a separate stack of indexes, one for each structure
67
- on the TypeSpec stack. These are indexes into the list of fields in the
68
- structure's TypeSpec. When we {read,write}FieldBegin, we push on the
69
- TypeSpec for the field.
70
- - When we begin writing a list or set, we push on the TypeSpec for the
71
- element type.
72
- - For maps, we have a separate stack of booleans, one for each map on the
73
- TypeSpec stack. The boolean is true if we are writing the key for that
74
- map, and false if we are writing the value. Maps are the trickiest case
75
- because the generated code does not call any protocol method between
76
- the key and the value. As a result, we potentially have to switch
77
- between map key state and map value state after reading/writing any object.
78
- - This job is handled by the stateTransition method. It is called after
79
- reading/writing every object. It pops the current TypeSpec off the stack,
80
- then optionally pushes a new one on, depending on what the next TypeSpec is.
81
- If it is a struct, the job is left to the next writeFieldBegin. If it is a
82
- set or list, the just-popped typespec is pushed back on. If it is a map,
83
- the top of the key/value stack is toggled, and the appropriate TypeSpec
84
- is pushed.
85
-
86
- Optional fields are a little tricky also. We write a zero byte if they are
87
- absent and prefix them with an 0x01 byte if they are present
88
- */
89
-
90
- #define __STDC_LIMIT_MACROS
91
- #include <stdint.h>
92
- #include "TDenseProtocol.h"
93
- #include "TReflectionLocal.h"
94
-
95
- // Leaving this on for now. Disabling it will turn off asserts, which should
96
- // give a performance boost. When we have *really* thorough test cases,
97
- // we should drop this.
98
- #define DEBUG_TDENSEPROTOCOL
99
-
100
- // NOTE: Assertions should *only* be used to detect bugs in code,
101
- // either in TDenseProtocol itself, or in code using it.
102
- // (For example, using the wrong TypeSpec.)
103
- // Invalid data should NEVER cause an assertion failure,
104
- // no matter how grossly corrupted, nor how ingeniously crafted.
105
- #ifdef DEBUG_TDENSEPROTOCOL
106
- #undef NDEBUG
107
- #else
108
- #define NDEBUG
109
- #endif
110
- #include <cassert>
111
-
112
- using std::string;
113
-
114
- #ifdef __GNUC__
115
- #define UNLIKELY(val) (__builtin_expect((val), 0))
116
- #else
117
- #define UNLIKELY(val) (val)
118
- #endif
119
-
120
- namespace apache { namespace thrift { namespace protocol {
121
-
122
- const int TDenseProtocol::FP_PREFIX_LEN =
123
- apache::thrift::reflection::local::FP_PREFIX_LEN;
124
-
125
- // Top TypeSpec. TypeSpec of the structure being encoded.
126
- #define TTS (ts_stack_.back()) // type = TypeSpec*
127
- // InDeX. Index into TTS of the current/next field to encode.
128
- #define IDX (idx_stack_.back()) // type = int
129
- // Field TypeSpec. TypeSpec of the current/next field to encode.
130
- #define FTS (TTS->tstruct.specs[IDX]) // type = TypeSpec*
131
- // Field MeTa. Metadata of the current/next field to encode.
132
- #define FMT (TTS->tstruct.metas[IDX]) // type = FieldMeta
133
- // SubType 1/2. TypeSpec of the first/second subtype of this container.
134
- #define ST1 (TTS->tcontainer.subtype1)
135
- #define ST2 (TTS->tcontainer.subtype2)
136
-
137
-
138
- /**
139
- * Checks that @c ttype is indeed the ttype that we should be writing,
140
- * according to our typespec. Aborts if the test fails and debugging in on.
141
- */
142
- inline void TDenseProtocol::checkTType(const TType ttype) {
143
- assert(!ts_stack_.empty());
144
- assert(TTS->ttype == ttype);
145
- }
146
-
147
- /**
148
- * Makes sure that the TypeSpec stack is correct for the next object.
149
- * See top-of-file comments.
150
- */
151
- inline void TDenseProtocol::stateTransition() {
152
- TypeSpec* old_tts = ts_stack_.back();
153
- ts_stack_.pop_back();
154
-
155
- // If this is the end of the top-level write, we should have just popped
156
- // the TypeSpec passed to the constructor.
157
- if (ts_stack_.empty()) {
158
- assert(old_tts = type_spec_);
159
- return;
160
- }
161
-
162
- switch (TTS->ttype) {
163
-
164
- case T_STRUCT:
165
- assert(old_tts == FTS);
166
- break;
167
-
168
- case T_LIST:
169
- case T_SET:
170
- assert(old_tts == ST1);
171
- ts_stack_.push_back(old_tts);
172
- break;
173
-
174
- case T_MAP:
175
- assert(old_tts == (mkv_stack_.back() ? ST1 : ST2));
176
- mkv_stack_.back() = !mkv_stack_.back();
177
- ts_stack_.push_back(mkv_stack_.back() ? ST1 : ST2);
178
- break;
179
-
180
- default:
181
- assert(!"Invalid TType in stateTransition.");
182
- break;
183
-
184
- }
185
- }
186
-
187
-
188
- /*
189
- * Variable-length quantity functions.
190
- */
191
-
192
- inline uint32_t TDenseProtocol::vlqRead(uint64_t& vlq) {
193
- uint32_t used = 0;
194
- uint64_t val = 0;
195
- uint8_t buf[10]; // 64 bits / (7 bits/byte) = 10 bytes.
196
- uint32_t buf_size = sizeof(buf);
197
- const uint8_t* borrowed = trans_->borrow(buf, &buf_size);
198
-
199
- // Fast path. TODO(dreiss): Make it faster.
200
- if (borrowed != NULL) {
201
- while (true) {
202
- uint8_t byte = borrowed[used];
203
- used++;
204
- val = (val << 7) | (byte & 0x7f);
205
- if (!(byte & 0x80)) {
206
- vlq = val;
207
- trans_->consume(used);
208
- return used;
209
- }
210
- // Have to check for invalid data so we don't crash.
211
- if (UNLIKELY(used == sizeof(buf))) {
212
- resetState();
213
- throw TProtocolException(TProtocolException::INVALID_DATA, "Variable-length int over 10 bytes.");
214
- }
215
- }
216
- }
217
-
218
- // Slow path.
219
- else {
220
- while (true) {
221
- uint8_t byte;
222
- used += trans_->readAll(&byte, 1);
223
- val = (val << 7) | (byte & 0x7f);
224
- if (!(byte & 0x80)) {
225
- vlq = val;
226
- return used;
227
- }
228
- // Might as well check for invalid data on the slow path too.
229
- if (UNLIKELY(used >= sizeof(buf))) {
230
- resetState();
231
- throw TProtocolException(TProtocolException::INVALID_DATA, "Variable-length int over 10 bytes.");
232
- }
233
- }
234
- }
235
- }
236
-
237
- inline uint32_t TDenseProtocol::vlqWrite(uint64_t vlq) {
238
- uint8_t buf[10]; // 64 bits / (7 bits/byte) = 10 bytes.
239
- int32_t pos = sizeof(buf) - 1;
240
-
241
- // Write the thing from back to front.
242
- buf[pos] = vlq & 0x7f;
243
- vlq >>= 7;
244
- pos--;
245
-
246
- while (vlq > 0) {
247
- assert(pos >= 0);
248
- buf[pos] = (vlq | 0x80);
249
- vlq >>= 7;
250
- pos--;
251
- }
252
-
253
- // Back up one step before writing.
254
- pos++;
255
-
256
- trans_->write(buf+pos, sizeof(buf) - pos);
257
- return sizeof(buf) - pos;
258
- }
259
-
260
-
261
-
262
- /*
263
- * Writing functions.
264
- */
265
-
266
- uint32_t TDenseProtocol::writeMessageBegin(const std::string& name,
267
- const TMessageType messageType,
268
- const int32_t seqid) {
269
- throw TApplicationException("TDenseProtocol doesn't work with messages (yet).");
270
-
271
- int32_t version = (VERSION_2) | ((int32_t)messageType);
272
- uint32_t wsize = 0;
273
- wsize += subWriteI32(version);
274
- wsize += subWriteString(name);
275
- wsize += subWriteI32(seqid);
276
- return wsize;
277
- }
278
-
279
- uint32_t TDenseProtocol::writeMessageEnd() {
280
- return 0;
281
- }
282
-
283
- uint32_t TDenseProtocol::writeStructBegin(const char* name) {
284
- uint32_t xfer = 0;
285
-
286
- // The TypeSpec stack should be empty if this is the top-level read/write.
287
- // If it is, we push the TypeSpec passed to the constructor.
288
- if (ts_stack_.empty()) {
289
- assert(standalone_);
290
-
291
- if (type_spec_ == NULL) {
292
- resetState();
293
- throw TApplicationException("TDenseProtocol: No type specified.");
294
- } else {
295
- assert(type_spec_->ttype == T_STRUCT);
296
- ts_stack_.push_back(type_spec_);
297
- // Write out a prefix of the structure fingerprint.
298
- trans_->write(type_spec_->fp_prefix, FP_PREFIX_LEN);
299
- xfer += FP_PREFIX_LEN;
300
- }
301
- }
302
-
303
- // We need a new field index for this structure.
304
- idx_stack_.push_back(0);
305
- return 0;
306
- }
307
-
308
- uint32_t TDenseProtocol::writeStructEnd() {
309
- idx_stack_.pop_back();
310
- stateTransition();
311
- return 0;
312
- }
313
-
314
- uint32_t TDenseProtocol::writeFieldBegin(const char* name,
315
- const TType fieldType,
316
- const int16_t fieldId) {
317
- uint32_t xfer = 0;
318
-
319
- // Skip over optional fields.
320
- while (FMT.tag != fieldId) {
321
- // TODO(dreiss): Old meta here.
322
- assert(FTS->ttype != T_STOP);
323
- assert(FMT.is_optional);
324
- // Write a zero byte so the reader can skip it.
325
- xfer += subWriteBool(false);
326
- // And advance to the next field.
327
- IDX++;
328
- }
329
-
330
- // TODO(dreiss): give a better exception.
331
- assert(FTS->ttype == fieldType);
332
-
333
- if (FMT.is_optional) {
334
- subWriteBool(true);
335
- xfer += 1;
336
- }
337
-
338
- // writeFieldStop shares all lot of logic up to this point.
339
- // Instead of replicating it all, we just call this method from that one
340
- // and use a gross special case here.
341
- if (UNLIKELY(FTS->ttype != T_STOP)) {
342
- // For normal fields, push the TypeSpec that we're about to use.
343
- ts_stack_.push_back(FTS);
344
- }
345
- return xfer;
346
- }
347
-
348
- uint32_t TDenseProtocol::writeFieldEnd() {
349
- // Just move on to the next field.
350
- IDX++;
351
- return 0;
352
- }
353
-
354
- uint32_t TDenseProtocol::writeFieldStop() {
355
- return TDenseProtocol::writeFieldBegin("", T_STOP, 0);
356
- }
357
-
358
- uint32_t TDenseProtocol::writeMapBegin(const TType keyType,
359
- const TType valType,
360
- const uint32_t size) {
361
- checkTType(T_MAP);
362
-
363
- assert(keyType == ST1->ttype);
364
- assert(valType == ST2->ttype);
365
-
366
- ts_stack_.push_back(ST1);
367
- mkv_stack_.push_back(true);
368
-
369
- return subWriteI32((int32_t)size);
370
- }
371
-
372
- uint32_t TDenseProtocol::writeMapEnd() {
373
- // Pop off the value type, as well as our entry in the map key/value stack.
374
- // stateTransition takes care of popping off our TypeSpec.
375
- ts_stack_.pop_back();
376
- mkv_stack_.pop_back();
377
- stateTransition();
378
- return 0;
379
- }
380
-
381
- uint32_t TDenseProtocol::writeListBegin(const TType elemType,
382
- const uint32_t size) {
383
- checkTType(T_LIST);
384
-
385
- assert(elemType == ST1->ttype);
386
- ts_stack_.push_back(ST1);
387
- return subWriteI32((int32_t)size);
388
- }
389
-
390
- uint32_t TDenseProtocol::writeListEnd() {
391
- // Pop off the element type. stateTransition takes care of popping off ours.
392
- ts_stack_.pop_back();
393
- stateTransition();
394
- return 0;
395
- }
396
-
397
- uint32_t TDenseProtocol::writeSetBegin(const TType elemType,
398
- const uint32_t size) {
399
- checkTType(T_SET);
400
-
401
- assert(elemType == ST1->ttype);
402
- ts_stack_.push_back(ST1);
403
- return subWriteI32((int32_t)size);
404
- }
405
-
406
- uint32_t TDenseProtocol::writeSetEnd() {
407
- // Pop off the element type. stateTransition takes care of popping off ours.
408
- ts_stack_.pop_back();
409
- stateTransition();
410
- return 0;
411
- }
412
-
413
- uint32_t TDenseProtocol::writeBool(const bool value) {
414
- checkTType(T_BOOL);
415
- stateTransition();
416
- return TBinaryProtocol::writeBool(value);
417
- }
418
-
419
- uint32_t TDenseProtocol::writeByte(const int8_t byte) {
420
- checkTType(T_BYTE);
421
- stateTransition();
422
- return TBinaryProtocol::writeByte(byte);
423
- }
424
-
425
- uint32_t TDenseProtocol::writeI16(const int16_t i16) {
426
- checkTType(T_I16);
427
- stateTransition();
428
- return vlqWrite(i16);
429
- }
430
-
431
- uint32_t TDenseProtocol::writeI32(const int32_t i32) {
432
- checkTType(T_I32);
433
- stateTransition();
434
- return vlqWrite(i32);
435
- }
436
-
437
- uint32_t TDenseProtocol::writeI64(const int64_t i64) {
438
- checkTType(T_I64);
439
- stateTransition();
440
- return vlqWrite(i64);
441
- }
442
-
443
- uint32_t TDenseProtocol::writeDouble(const double dub) {
444
- checkTType(T_DOUBLE);
445
- stateTransition();
446
- return TBinaryProtocol::writeDouble(dub);
447
- }
448
-
449
- uint32_t TDenseProtocol::writeString(const std::string& str) {
450
- checkTType(T_STRING);
451
- stateTransition();
452
- return subWriteString(str);
453
- }
454
-
455
- uint32_t TDenseProtocol::writeBinary(const std::string& str) {
456
- return TDenseProtocol::writeString(str);
457
- }
458
-
459
- inline uint32_t TDenseProtocol::subWriteI32(const int32_t i32) {
460
- return vlqWrite(i32);
461
- }
462
-
463
- uint32_t TDenseProtocol::subWriteString(const std::string& str) {
464
- uint32_t size = str.size();
465
- uint32_t xfer = subWriteI32((int32_t)size);
466
- if (size > 0) {
467
- trans_->write((uint8_t*)str.data(), size);
468
- }
469
- return xfer + size;
470
- }
471
-
472
-
473
-
474
- /*
475
- * Reading functions
476
- *
477
- * These have a lot of the same logic as the writing functions, so if
478
- * something is confusing, look for comments in the corresponding writer.
479
- */
480
-
481
- uint32_t TDenseProtocol::readMessageBegin(std::string& name,
482
- TMessageType& messageType,
483
- int32_t& seqid) {
484
- throw TApplicationException("TDenseProtocol doesn't work with messages (yet).");
485
-
486
- uint32_t xfer = 0;
487
- int32_t sz;
488
- xfer += subReadI32(sz);
489
-
490
- if (sz < 0) {
491
- // Check for correct version number
492
- int32_t version = sz & VERSION_MASK;
493
- if (version != VERSION_2) {
494
- throw TProtocolException(TProtocolException::BAD_VERSION, "Bad version identifier");
495
- }
496
- messageType = (TMessageType)(sz & 0x000000ff);
497
- xfer += subReadString(name);
498
- xfer += subReadI32(seqid);
499
- } else {
500
- throw TProtocolException(TProtocolException::BAD_VERSION, "No version identifier... old protocol client in strict mode?");
501
- }
502
- return xfer;
503
- }
504
-
505
- uint32_t TDenseProtocol::readMessageEnd() {
506
- return 0;
507
- }
508
-
509
- uint32_t TDenseProtocol::readStructBegin(string& name) {
510
- uint32_t xfer = 0;
511
-
512
- if (ts_stack_.empty()) {
513
- assert(standalone_);
514
-
515
- if (type_spec_ == NULL) {
516
- resetState();
517
- throw TApplicationException("TDenseProtocol: No type specified.");
518
- } else {
519
- assert(type_spec_->ttype == T_STRUCT);
520
- ts_stack_.push_back(type_spec_);
521
-
522
- // Check the fingerprint prefix.
523
- uint8_t buf[FP_PREFIX_LEN];
524
- xfer += trans_->read(buf, FP_PREFIX_LEN);
525
- if (std::memcmp(buf, type_spec_->fp_prefix, FP_PREFIX_LEN) != 0) {
526
- resetState();
527
- throw TProtocolException(TProtocolException::INVALID_DATA,
528
- "Fingerprint in data does not match type_spec.");
529
- }
530
- }
531
- }
532
-
533
- // We need a new field index for this structure.
534
- idx_stack_.push_back(0);
535
- return 0;
536
- }
537
-
538
- uint32_t TDenseProtocol::readStructEnd() {
539
- idx_stack_.pop_back();
540
- stateTransition();
541
- return 0;
542
- }
543
-
544
- uint32_t TDenseProtocol::readFieldBegin(string& name,
545
- TType& fieldType,
546
- int16_t& fieldId) {
547
- uint32_t xfer = 0;
548
-
549
- // For optional fields, check to see if they are there.
550
- while (FMT.is_optional) {
551
- bool is_present;
552
- xfer += subReadBool(is_present);
553
- if (is_present) {
554
- break;
555
- }
556
- IDX++;
557
- }
558
-
559
- // Once we hit a mandatory field, or an optional field that is present,
560
- // we know that FMT and FTS point to the appropriate field.
561
-
562
- fieldId = FMT.tag;
563
- fieldType = FTS->ttype;
564
-
565
- // Normally, we push the TypeSpec that we are about to read,
566
- // but no reading is done for T_STOP.
567
- if (FTS->ttype != T_STOP) {
568
- ts_stack_.push_back(FTS);
569
- }
570
- return xfer;
571
- }
572
-
573
- uint32_t TDenseProtocol::readFieldEnd() {
574
- IDX++;
575
- return 0;
576
- }
577
-
578
- uint32_t TDenseProtocol::readMapBegin(TType& keyType,
579
- TType& valType,
580
- uint32_t& size) {
581
- checkTType(T_MAP);
582
-
583
- uint32_t xfer = 0;
584
- int32_t sizei;
585
- xfer += subReadI32(sizei);
586
- if (sizei < 0) {
587
- resetState();
588
- throw TProtocolException(TProtocolException::NEGATIVE_SIZE);
589
- } else if (container_limit_ && sizei > container_limit_) {
590
- resetState();
591
- throw TProtocolException(TProtocolException::SIZE_LIMIT);
592
- }
593
- size = (uint32_t)sizei;
594
-
595
- keyType = ST1->ttype;
596
- valType = ST2->ttype;
597
-
598
- ts_stack_.push_back(ST1);
599
- mkv_stack_.push_back(true);
600
-
601
- return xfer;
602
- }
603
-
604
- uint32_t TDenseProtocol::readMapEnd() {
605
- ts_stack_.pop_back();
606
- mkv_stack_.pop_back();
607
- stateTransition();
608
- return 0;
609
- }
610
-
611
- uint32_t TDenseProtocol::readListBegin(TType& elemType,
612
- uint32_t& size) {
613
- checkTType(T_LIST);
614
-
615
- uint32_t xfer = 0;
616
- int32_t sizei;
617
- xfer += subReadI32(sizei);
618
- if (sizei < 0) {
619
- resetState();
620
- throw TProtocolException(TProtocolException::NEGATIVE_SIZE);
621
- } else if (container_limit_ && sizei > container_limit_) {
622
- resetState();
623
- throw TProtocolException(TProtocolException::SIZE_LIMIT);
624
- }
625
- size = (uint32_t)sizei;
626
-
627
- elemType = ST1->ttype;
628
-
629
- ts_stack_.push_back(ST1);
630
-
631
- return xfer;
632
- }
633
-
634
- uint32_t TDenseProtocol::readListEnd() {
635
- ts_stack_.pop_back();
636
- stateTransition();
637
- return 0;
638
- }
639
-
640
- uint32_t TDenseProtocol::readSetBegin(TType& elemType,
641
- uint32_t& size) {
642
- checkTType(T_SET);
643
-
644
- uint32_t xfer = 0;
645
- int32_t sizei;
646
- xfer += subReadI32(sizei);
647
- if (sizei < 0) {
648
- resetState();
649
- throw TProtocolException(TProtocolException::NEGATIVE_SIZE);
650
- } else if (container_limit_ && sizei > container_limit_) {
651
- resetState();
652
- throw TProtocolException(TProtocolException::SIZE_LIMIT);
653
- }
654
- size = (uint32_t)sizei;
655
-
656
- elemType = ST1->ttype;
657
-
658
- ts_stack_.push_back(ST1);
659
-
660
- return xfer;
661
- }
662
-
663
- uint32_t TDenseProtocol::readSetEnd() {
664
- ts_stack_.pop_back();
665
- stateTransition();
666
- return 0;
667
- }
668
-
669
- uint32_t TDenseProtocol::readBool(bool& value) {
670
- checkTType(T_BOOL);
671
- stateTransition();
672
- return TBinaryProtocol::readBool(value);
673
- }
674
-
675
- uint32_t TDenseProtocol::readByte(int8_t& byte) {
676
- checkTType(T_BYTE);
677
- stateTransition();
678
- return TBinaryProtocol::readByte(byte);
679
- }
680
-
681
- uint32_t TDenseProtocol::readI16(int16_t& i16) {
682
- checkTType(T_I16);
683
- stateTransition();
684
- uint64_t u64;
685
- uint32_t rv = vlqRead(u64);
686
- int64_t val = (int64_t)u64;
687
- if (UNLIKELY(val > INT16_MAX || val < INT16_MIN)) {
688
- resetState();
689
- throw TProtocolException(TProtocolException::INVALID_DATA,
690
- "i16 out of range.");
691
- }
692
- i16 = (int16_t)val;
693
- return rv;
694
- }
695
-
696
- uint32_t TDenseProtocol::readI32(int32_t& i32) {
697
- checkTType(T_I32);
698
- stateTransition();
699
- uint64_t u64;
700
- uint32_t rv = vlqRead(u64);
701
- int64_t val = (int64_t)u64;
702
- if (UNLIKELY(val > INT32_MAX || val < INT32_MIN)) {
703
- resetState();
704
- throw TProtocolException(TProtocolException::INVALID_DATA,
705
- "i32 out of range.");
706
- }
707
- i32 = (int32_t)val;
708
- return rv;
709
- }
710
-
711
- uint32_t TDenseProtocol::readI64(int64_t& i64) {
712
- checkTType(T_I64);
713
- stateTransition();
714
- uint64_t u64;
715
- uint32_t rv = vlqRead(u64);
716
- int64_t val = (int64_t)u64;
717
- if (UNLIKELY(val > INT64_MAX || val < INT64_MIN)) {
718
- resetState();
719
- throw TProtocolException(TProtocolException::INVALID_DATA,
720
- "i64 out of range.");
721
- }
722
- i64 = (int64_t)val;
723
- return rv;
724
- }
725
-
726
- uint32_t TDenseProtocol::readDouble(double& dub) {
727
- checkTType(T_DOUBLE);
728
- stateTransition();
729
- return TBinaryProtocol::readDouble(dub);
730
- }
731
-
732
- uint32_t TDenseProtocol::readString(std::string& str) {
733
- checkTType(T_STRING);
734
- stateTransition();
735
- return subReadString(str);
736
- }
737
-
738
- uint32_t TDenseProtocol::readBinary(std::string& str) {
739
- return TDenseProtocol::readString(str);
740
- }
741
-
742
- uint32_t TDenseProtocol::subReadI32(int32_t& i32) {
743
- uint64_t u64;
744
- uint32_t rv = vlqRead(u64);
745
- int64_t val = (int64_t)u64;
746
- if (UNLIKELY(val > INT32_MAX || val < INT32_MIN)) {
747
- resetState();
748
- throw TProtocolException(TProtocolException::INVALID_DATA,
749
- "i32 out of range.");
750
- }
751
- i32 = (int32_t)val;
752
- return rv;
753
- }
754
-
755
- uint32_t TDenseProtocol::subReadString(std::string& str) {
756
- uint32_t xfer;
757
- int32_t size;
758
- xfer = subReadI32(size);
759
- return xfer + readStringBody(str, size);
760
- }
761
-
762
- }}} // apache::thrift::protocol