auser-poolparty 1.3.1 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,998 +0,0 @@
1
- /*
2
- * Licensed to the Apache Software Foundation (ASF) under one
3
- * or more contributor license agreements. See the NOTICE file
4
- * distributed with this work for additional information
5
- * regarding copyright ownership. The ASF licenses this file
6
- * to you under the Apache License, Version 2.0 (the
7
- * "License"); you may not use this file except in compliance
8
- * with the License. You may obtain a copy of the License at
9
- *
10
- * http://www.apache.org/licenses/LICENSE-2.0
11
- *
12
- * Unless required by applicable law or agreed to in writing,
13
- * software distributed under the License is distributed on an
14
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
- * KIND, either express or implied. See the License for the
16
- * specific language governing permissions and limitations
17
- * under the License.
18
- */
19
-
20
- #include "TJSONProtocol.h"
21
-
22
- #include <math.h>
23
- #include <boost/lexical_cast.hpp>
24
- #include "TBase64Utils.h"
25
- #include <transport/TTransportException.h>
26
-
27
- using namespace apache::thrift::transport;
28
-
29
- namespace apache { namespace thrift { namespace protocol {
30
-
31
-
32
- // Static data
33
-
34
- static const uint8_t kJSONObjectStart = '{';
35
- static const uint8_t kJSONObjectEnd = '}';
36
- static const uint8_t kJSONArrayStart = '[';
37
- static const uint8_t kJSONArrayEnd = ']';
38
- static const uint8_t kJSONNewline = '\n';
39
- static const uint8_t kJSONPairSeparator = ':';
40
- static const uint8_t kJSONElemSeparator = ',';
41
- static const uint8_t kJSONBackslash = '\\';
42
- static const uint8_t kJSONStringDelimiter = '"';
43
- static const uint8_t kJSONZeroChar = '0';
44
- static const uint8_t kJSONEscapeChar = 'u';
45
-
46
- static const std::string kJSONEscapePrefix("\\u00");
47
-
48
- static const uint32_t kThriftVersion1 = 1;
49
-
50
- static const std::string kThriftNan("NaN");
51
- static const std::string kThriftInfinity("Infinity");
52
- static const std::string kThriftNegativeInfinity("-Infinity");
53
-
54
- static const std::string kTypeNameBool("tf");
55
- static const std::string kTypeNameByte("i8");
56
- static const std::string kTypeNameI16("i16");
57
- static const std::string kTypeNameI32("i32");
58
- static const std::string kTypeNameI64("i64");
59
- static const std::string kTypeNameDouble("dbl");
60
- static const std::string kTypeNameStruct("rec");
61
- static const std::string kTypeNameString("str");
62
- static const std::string kTypeNameMap("map");
63
- static const std::string kTypeNameList("lst");
64
- static const std::string kTypeNameSet("set");
65
-
66
- static const std::string &getTypeNameForTypeID(TType typeID) {
67
- switch (typeID) {
68
- case T_BOOL:
69
- return kTypeNameBool;
70
- case T_BYTE:
71
- return kTypeNameByte;
72
- case T_I16:
73
- return kTypeNameI16;
74
- case T_I32:
75
- return kTypeNameI32;
76
- case T_I64:
77
- return kTypeNameI64;
78
- case T_DOUBLE:
79
- return kTypeNameDouble;
80
- case T_STRING:
81
- return kTypeNameString;
82
- case T_STRUCT:
83
- return kTypeNameStruct;
84
- case T_MAP:
85
- return kTypeNameMap;
86
- case T_SET:
87
- return kTypeNameSet;
88
- case T_LIST:
89
- return kTypeNameList;
90
- default:
91
- throw TProtocolException(TProtocolException::NOT_IMPLEMENTED,
92
- "Unrecognized type");
93
- }
94
- }
95
-
96
- static TType getTypeIDForTypeName(const std::string &name) {
97
- TType result = T_STOP; // Sentinel value
98
- if (name.length() > 1) {
99
- switch (name[0]) {
100
- case 'd':
101
- result = T_DOUBLE;
102
- break;
103
- case 'i':
104
- switch (name[1]) {
105
- case '8':
106
- result = T_BYTE;
107
- break;
108
- case '1':
109
- result = T_I16;
110
- break;
111
- case '3':
112
- result = T_I32;
113
- break;
114
- case '6':
115
- result = T_I64;
116
- break;
117
- }
118
- break;
119
- case 'l':
120
- result = T_LIST;
121
- break;
122
- case 'm':
123
- result = T_MAP;
124
- break;
125
- case 'r':
126
- result = T_STRUCT;
127
- break;
128
- case 's':
129
- if (name[1] == 't') {
130
- result = T_STRING;
131
- }
132
- else if (name[1] == 'e') {
133
- result = T_SET;
134
- }
135
- break;
136
- case 't':
137
- result = T_BOOL;
138
- break;
139
- }
140
- }
141
- if (result == T_STOP) {
142
- throw TProtocolException(TProtocolException::NOT_IMPLEMENTED,
143
- "Unrecognized type");
144
- }
145
- return result;
146
- }
147
-
148
-
149
- // This table describes the handling for the first 0x30 characters
150
- // 0 : escape using "\u00xx" notation
151
- // 1 : just output index
152
- // <other> : escape using "\<other>" notation
153
- static const uint8_t kJSONCharTable[0x30] = {
154
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
155
- 0, 0, 0, 0, 0, 0, 0, 0,'b','t','n', 0,'f','r', 0, 0, // 0
156
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
157
- 1, 1,'"', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
158
- };
159
-
160
-
161
- // This string's characters must match up with the elements in kEscapeCharVals.
162
- // I don't have '/' on this list even though it appears on www.json.org --
163
- // it is not in the RFC
164
- const static std::string kEscapeChars("\"\\bfnrt");
165
-
166
- // The elements of this array must match up with the sequence of characters in
167
- // kEscapeChars
168
- const static uint8_t kEscapeCharVals[7] = {
169
- '"', '\\', '\b', '\f', '\n', '\r', '\t',
170
- };
171
-
172
-
173
- // Static helper functions
174
-
175
- // Read 1 character from the transport trans and verify that it is the
176
- // expected character ch.
177
- // Throw a protocol exception if it is not.
178
- static uint32_t readSyntaxChar(TJSONProtocol::LookaheadReader &reader,
179
- uint8_t ch) {
180
- uint8_t ch2 = reader.read();
181
- if (ch2 != ch) {
182
- throw TProtocolException(TProtocolException::INVALID_DATA,
183
- "Expected \'" + std::string((char *)&ch, 1) +
184
- "\'; got \'" + std::string((char *)&ch2, 1) +
185
- "\'.");
186
- }
187
- return 1;
188
- }
189
-
190
- // Return the integer value of a hex character ch.
191
- // Throw a protocol exception if the character is not [0-9a-f].
192
- static uint8_t hexVal(uint8_t ch) {
193
- if ((ch >= '0') && (ch <= '9')) {
194
- return ch - '0';
195
- }
196
- else if ((ch >= 'a') && (ch <= 'f')) {
197
- return ch - 'a';
198
- }
199
- else {
200
- throw TProtocolException(TProtocolException::INVALID_DATA,
201
- "Expected hex val ([0-9a-f]); got \'"
202
- + std::string((char *)&ch, 1) + "\'.");
203
- }
204
- }
205
-
206
- // Return the hex character representing the integer val. The value is masked
207
- // to make sure it is in the correct range.
208
- static uint8_t hexChar(uint8_t val) {
209
- val &= 0x0F;
210
- if (val < 10) {
211
- return val + '0';
212
- }
213
- else {
214
- return val + 'a';
215
- }
216
- }
217
-
218
- // Return true if the character ch is in [-+0-9.Ee]; false otherwise
219
- static bool isJSONNumeric(uint8_t ch) {
220
- switch (ch) {
221
- case '+':
222
- case '-':
223
- case '.':
224
- case '0':
225
- case '1':
226
- case '2':
227
- case '3':
228
- case '4':
229
- case '5':
230
- case '6':
231
- case '7':
232
- case '8':
233
- case '9':
234
- case 'E':
235
- case 'e':
236
- return true;
237
- }
238
- return false;
239
- }
240
-
241
-
242
- /**
243
- * Class to serve as base JSON context and as base class for other context
244
- * implementations
245
- */
246
- class TJSONContext {
247
-
248
- public:
249
-
250
- TJSONContext() {};
251
-
252
- virtual ~TJSONContext() {};
253
-
254
- /**
255
- * Write context data to the transport. Default is to do nothing.
256
- */
257
- virtual uint32_t write(TTransport &trans) {
258
- return 0;
259
- };
260
-
261
- /**
262
- * Read context data from the transport. Default is to do nothing.
263
- */
264
- virtual uint32_t read(TJSONProtocol::LookaheadReader &reader) {
265
- return 0;
266
- };
267
-
268
- /**
269
- * Return true if numbers need to be escaped as strings in this context.
270
- * Default behavior is to return false.
271
- */
272
- virtual bool escapeNum() {
273
- return false;
274
- }
275
- };
276
-
277
- // Context class for object member key-value pairs
278
- class JSONPairContext : public TJSONContext {
279
-
280
- public:
281
-
282
- JSONPairContext() :
283
- first_(true),
284
- colon_(true) {
285
- }
286
-
287
- uint32_t write(TTransport &trans) {
288
- if (first_) {
289
- first_ = false;
290
- colon_ = true;
291
- return 0;
292
- }
293
- else {
294
- trans.write(colon_ ? &kJSONPairSeparator : &kJSONElemSeparator, 1);
295
- colon_ = !colon_;
296
- return 1;
297
- }
298
- }
299
-
300
- uint32_t read(TJSONProtocol::LookaheadReader &reader) {
301
- if (first_) {
302
- first_ = false;
303
- colon_ = true;
304
- return 0;
305
- }
306
- else {
307
- uint8_t ch = (colon_ ? kJSONPairSeparator : kJSONElemSeparator);
308
- colon_ = !colon_;
309
- return readSyntaxChar(reader, ch);
310
- }
311
- }
312
-
313
- // Numbers must be turned into strings if they are the key part of a pair
314
- virtual bool escapeNum() {
315
- return colon_;
316
- }
317
-
318
- private:
319
-
320
- bool first_;
321
- bool colon_;
322
- };
323
-
324
- // Context class for lists
325
- class JSONListContext : public TJSONContext {
326
-
327
- public:
328
-
329
- JSONListContext() :
330
- first_(true) {
331
- }
332
-
333
- uint32_t write(TTransport &trans) {
334
- if (first_) {
335
- first_ = false;
336
- return 0;
337
- }
338
- else {
339
- trans.write(&kJSONElemSeparator, 1);
340
- return 1;
341
- }
342
- }
343
-
344
- uint32_t read(TJSONProtocol::LookaheadReader &reader) {
345
- if (first_) {
346
- first_ = false;
347
- return 0;
348
- }
349
- else {
350
- return readSyntaxChar(reader, kJSONElemSeparator);
351
- }
352
- }
353
-
354
- private:
355
- bool first_;
356
- };
357
-
358
-
359
- TJSONProtocol::TJSONProtocol(boost::shared_ptr<TTransport> ptrans) :
360
- TProtocol(ptrans),
361
- context_(new TJSONContext()),
362
- reader_(*ptrans) {
363
- }
364
-
365
- TJSONProtocol::~TJSONProtocol() {}
366
-
367
- void TJSONProtocol::pushContext(boost::shared_ptr<TJSONContext> c) {
368
- contexts_.push(context_);
369
- context_ = c;
370
- }
371
-
372
- void TJSONProtocol::popContext() {
373
- context_ = contexts_.top();
374
- contexts_.pop();
375
- }
376
-
377
- // Write the character ch as a JSON escape sequence ("\u00xx")
378
- uint32_t TJSONProtocol::writeJSONEscapeChar(uint8_t ch) {
379
- trans_->write((const uint8_t *)kJSONEscapePrefix.c_str(),
380
- kJSONEscapePrefix.length());
381
- uint8_t outCh = hexChar(ch >> 4);
382
- trans_->write(&outCh, 1);
383
- outCh = hexChar(ch);
384
- trans_->write(&outCh, 1);
385
- return 6;
386
- }
387
-
388
- // Write the character ch as part of a JSON string, escaping as appropriate.
389
- uint32_t TJSONProtocol::writeJSONChar(uint8_t ch) {
390
- if (ch >= 0x30) {
391
- if (ch == kJSONBackslash) { // Only special character >= 0x30 is '\'
392
- trans_->write(&kJSONBackslash, 1);
393
- trans_->write(&kJSONBackslash, 1);
394
- return 2;
395
- }
396
- else {
397
- trans_->write(&ch, 1);
398
- return 1;
399
- }
400
- }
401
- else {
402
- uint8_t outCh = kJSONCharTable[ch];
403
- // Check if regular character, backslash escaped, or JSON escaped
404
- if (outCh == 1) {
405
- trans_->write(&ch, 1);
406
- return 1;
407
- }
408
- else if (outCh > 1) {
409
- trans_->write(&kJSONBackslash, 1);
410
- trans_->write(&outCh, 1);
411
- return 2;
412
- }
413
- else {
414
- return writeJSONEscapeChar(ch);
415
- }
416
- }
417
- }
418
-
419
- // Write out the contents of the string str as a JSON string, escaping
420
- // characters as appropriate.
421
- uint32_t TJSONProtocol::writeJSONString(const std::string &str) {
422
- uint32_t result = context_->write(*trans_);
423
- result += 2; // For quotes
424
- trans_->write(&kJSONStringDelimiter, 1);
425
- std::string::const_iterator iter(str.begin());
426
- std::string::const_iterator end(str.end());
427
- while (iter != end) {
428
- result += writeJSONChar(*iter++);
429
- }
430
- trans_->write(&kJSONStringDelimiter, 1);
431
- return result;
432
- }
433
-
434
- // Write out the contents of the string as JSON string, base64-encoding
435
- // the string's contents, and escaping as appropriate
436
- uint32_t TJSONProtocol::writeJSONBase64(const std::string &str) {
437
- uint32_t result = context_->write(*trans_);
438
- result += 2; // For quotes
439
- trans_->write(&kJSONStringDelimiter, 1);
440
- uint8_t b[4];
441
- const uint8_t *bytes = (const uint8_t *)str.c_str();
442
- uint32_t len = str.length();
443
- while (len >= 3) {
444
- // Encode 3 bytes at a time
445
- base64_encode(bytes, 3, b);
446
- trans_->write(b, 4);
447
- result += 4;
448
- bytes += 3;
449
- len -=3;
450
- }
451
- if (len) { // Handle remainder
452
- base64_encode(bytes, len, b);
453
- trans_->write(b, len + 1);
454
- result += len + 1;
455
- }
456
- trans_->write(&kJSONStringDelimiter, 1);
457
- return result;
458
- }
459
-
460
- // Convert the given integer type to a JSON number, or a string
461
- // if the context requires it (eg: key in a map pair).
462
- template <typename NumberType>
463
- uint32_t TJSONProtocol::writeJSONInteger(NumberType num) {
464
- uint32_t result = context_->write(*trans_);
465
- std::string val(boost::lexical_cast<std::string>(num));
466
- bool escapeNum = context_->escapeNum();
467
- if (escapeNum) {
468
- trans_->write(&kJSONStringDelimiter, 1);
469
- result += 1;
470
- }
471
- trans_->write((const uint8_t *)val.c_str(), val.length());
472
- result += val.length();
473
- if (escapeNum) {
474
- trans_->write(&kJSONStringDelimiter, 1);
475
- result += 1;
476
- }
477
- return result;
478
- }
479
-
480
- // Convert the given double to a JSON string, which is either the number,
481
- // "NaN" or "Infinity" or "-Infinity".
482
- uint32_t TJSONProtocol::writeJSONDouble(double num) {
483
- uint32_t result = context_->write(*trans_);
484
- std::string val(boost::lexical_cast<std::string>(num));
485
-
486
- // Normalize output of boost::lexical_cast for NaNs and Infinities
487
- bool special = false;
488
- switch (val[0]) {
489
- case 'N':
490
- case 'n':
491
- val = kThriftNan;
492
- special = true;
493
- break;
494
- case 'I':
495
- case 'i':
496
- val = kThriftInfinity;
497
- special = true;
498
- break;
499
- case '-':
500
- if ((val[1] == 'I') || (val[1] == 'i')) {
501
- val = kThriftNegativeInfinity;
502
- special = true;
503
- }
504
- break;
505
- }
506
-
507
- bool escapeNum = special || context_->escapeNum();
508
- if (escapeNum) {
509
- trans_->write(&kJSONStringDelimiter, 1);
510
- result += 1;
511
- }
512
- trans_->write((const uint8_t *)val.c_str(), val.length());
513
- result += val.length();
514
- if (escapeNum) {
515
- trans_->write(&kJSONStringDelimiter, 1);
516
- result += 1;
517
- }
518
- return result;
519
- }
520
-
521
- uint32_t TJSONProtocol::writeJSONObjectStart() {
522
- uint32_t result = context_->write(*trans_);
523
- trans_->write(&kJSONObjectStart, 1);
524
- pushContext(boost::shared_ptr<TJSONContext>(new JSONPairContext()));
525
- return result + 1;
526
- }
527
-
528
- uint32_t TJSONProtocol::writeJSONObjectEnd() {
529
- popContext();
530
- trans_->write(&kJSONObjectEnd, 1);
531
- return 1;
532
- }
533
-
534
- uint32_t TJSONProtocol::writeJSONArrayStart() {
535
- uint32_t result = context_->write(*trans_);
536
- trans_->write(&kJSONArrayStart, 1);
537
- pushContext(boost::shared_ptr<TJSONContext>(new JSONListContext()));
538
- return result + 1;
539
- }
540
-
541
- uint32_t TJSONProtocol::writeJSONArrayEnd() {
542
- popContext();
543
- trans_->write(&kJSONArrayEnd, 1);
544
- return 1;
545
- }
546
-
547
- uint32_t TJSONProtocol::writeMessageBegin(const std::string& name,
548
- const TMessageType messageType,
549
- const int32_t seqid) {
550
- uint32_t result = writeJSONArrayStart();
551
- result += writeJSONInteger(kThriftVersion1);
552
- result += writeJSONString(name);
553
- result += writeJSONInteger(messageType);
554
- result += writeJSONInteger(seqid);
555
- return result;
556
- }
557
-
558
- uint32_t TJSONProtocol::writeMessageEnd() {
559
- return writeJSONArrayEnd();
560
- }
561
-
562
- uint32_t TJSONProtocol::writeStructBegin(const char* name) {
563
- return writeJSONObjectStart();
564
- }
565
-
566
- uint32_t TJSONProtocol::writeStructEnd() {
567
- return writeJSONObjectEnd();
568
- }
569
-
570
- uint32_t TJSONProtocol::writeFieldBegin(const char* name,
571
- const TType fieldType,
572
- const int16_t fieldId) {
573
- uint32_t result = writeJSONInteger(fieldId);
574
- result += writeJSONObjectStart();
575
- result += writeJSONString(getTypeNameForTypeID(fieldType));
576
- return result;
577
- }
578
-
579
- uint32_t TJSONProtocol::writeFieldEnd() {
580
- return writeJSONObjectEnd();
581
- }
582
-
583
- uint32_t TJSONProtocol::writeFieldStop() {
584
- return 0;
585
- }
586
-
587
- uint32_t TJSONProtocol::writeMapBegin(const TType keyType,
588
- const TType valType,
589
- const uint32_t size) {
590
- uint32_t result = writeJSONArrayStart();
591
- result += writeJSONString(getTypeNameForTypeID(keyType));
592
- result += writeJSONString(getTypeNameForTypeID(valType));
593
- result += writeJSONInteger((int64_t)size);
594
- result += writeJSONObjectStart();
595
- return result;
596
- }
597
-
598
- uint32_t TJSONProtocol::writeMapEnd() {
599
- return writeJSONObjectEnd() + writeJSONArrayEnd();
600
- }
601
-
602
- uint32_t TJSONProtocol::writeListBegin(const TType elemType,
603
- const uint32_t size) {
604
- uint32_t result = writeJSONArrayStart();
605
- result += writeJSONString(getTypeNameForTypeID(elemType));
606
- result += writeJSONInteger((int64_t)size);
607
- return result;
608
- }
609
-
610
- uint32_t TJSONProtocol::writeListEnd() {
611
- return writeJSONArrayEnd();
612
- }
613
-
614
- uint32_t TJSONProtocol::writeSetBegin(const TType elemType,
615
- const uint32_t size) {
616
- uint32_t result = writeJSONArrayStart();
617
- result += writeJSONString(getTypeNameForTypeID(elemType));
618
- result += writeJSONInteger((int64_t)size);
619
- return result;
620
- }
621
-
622
- uint32_t TJSONProtocol::writeSetEnd() {
623
- return writeJSONArrayEnd();
624
- }
625
-
626
- uint32_t TJSONProtocol::writeBool(const bool value) {
627
- return writeJSONInteger(value);
628
- }
629
-
630
- uint32_t TJSONProtocol::writeByte(const int8_t byte) {
631
- // writeByte() must be handled specially becuase boost::lexical cast sees
632
- // int8_t as a text type instead of an integer type
633
- return writeJSONInteger((int16_t)byte);
634
- }
635
-
636
- uint32_t TJSONProtocol::writeI16(const int16_t i16) {
637
- return writeJSONInteger(i16);
638
- }
639
-
640
- uint32_t TJSONProtocol::writeI32(const int32_t i32) {
641
- return writeJSONInteger(i32);
642
- }
643
-
644
- uint32_t TJSONProtocol::writeI64(const int64_t i64) {
645
- return writeJSONInteger(i64);
646
- }
647
-
648
- uint32_t TJSONProtocol::writeDouble(const double dub) {
649
- return writeJSONDouble(dub);
650
- }
651
-
652
- uint32_t TJSONProtocol::writeString(const std::string& str) {
653
- return writeJSONString(str);
654
- }
655
-
656
- uint32_t TJSONProtocol::writeBinary(const std::string& str) {
657
- return writeJSONBase64(str);
658
- }
659
-
660
- /**
661
- * Reading functions
662
- */
663
-
664
- // Reads 1 byte and verifies that it matches ch.
665
- uint32_t TJSONProtocol::readJSONSyntaxChar(uint8_t ch) {
666
- return readSyntaxChar(reader_, ch);
667
- }
668
-
669
- // Decodes the four hex parts of a JSON escaped string character and returns
670
- // the character via out. The first two characters must be "00".
671
- uint32_t TJSONProtocol::readJSONEscapeChar(uint8_t *out) {
672
- uint8_t b[2];
673
- readJSONSyntaxChar(kJSONZeroChar);
674
- readJSONSyntaxChar(kJSONZeroChar);
675
- b[0] = reader_.read();
676
- b[1] = reader_.read();
677
- *out = (hexVal(b[0]) << 4) + hexVal(b[1]);
678
- return 4;
679
- }
680
-
681
- // Decodes a JSON string, including unescaping, and returns the string via str
682
- uint32_t TJSONProtocol::readJSONString(std::string &str, bool skipContext) {
683
- uint32_t result = (skipContext ? 0 : context_->read(reader_));
684
- result += readJSONSyntaxChar(kJSONStringDelimiter);
685
- uint8_t ch;
686
- str.clear();
687
- while (true) {
688
- ch = reader_.read();
689
- ++result;
690
- if (ch == kJSONStringDelimiter) {
691
- break;
692
- }
693
- if (ch == kJSONBackslash) {
694
- ch = reader_.read();
695
- ++result;
696
- if (ch == kJSONEscapeChar) {
697
- result += readJSONEscapeChar(&ch);
698
- }
699
- else {
700
- size_t pos = kEscapeChars.find(ch);
701
- if (pos == std::string::npos) {
702
- throw TProtocolException(TProtocolException::INVALID_DATA,
703
- "Expected control char, got '" +
704
- std::string((const char *)&ch, 1) + "'.");
705
- }
706
- ch = kEscapeCharVals[pos];
707
- }
708
- }
709
- str += ch;
710
- }
711
- return result;
712
- }
713
-
714
- // Reads a block of base64 characters, decoding it, and returns via str
715
- uint32_t TJSONProtocol::readJSONBase64(std::string &str) {
716
- std::string tmp;
717
- uint32_t result = readJSONString(tmp);
718
- uint8_t *b = (uint8_t *)tmp.c_str();
719
- uint32_t len = tmp.length();
720
- str.clear();
721
- while (len >= 4) {
722
- base64_decode(b, 4);
723
- str.append((const char *)b, 3);
724
- b += 4;
725
- len -= 4;
726
- }
727
- // Don't decode if we hit the end or got a single leftover byte (invalid
728
- // base64 but legal for skip of regular string type)
729
- if (len > 1) {
730
- base64_decode(b, len);
731
- str.append((const char *)b, len - 1);
732
- }
733
- return result;
734
- }
735
-
736
- // Reads a sequence of characters, stopping at the first one that is not
737
- // a valid JSON numeric character.
738
- uint32_t TJSONProtocol::readJSONNumericChars(std::string &str) {
739
- uint32_t result = 0;
740
- str.clear();
741
- while (true) {
742
- uint8_t ch = reader_.peek();
743
- if (!isJSONNumeric(ch)) {
744
- break;
745
- }
746
- reader_.read();
747
- str += ch;
748
- ++result;
749
- }
750
- return result;
751
- }
752
-
753
- // Reads a sequence of characters and assembles them into a number,
754
- // returning them via num
755
- template <typename NumberType>
756
- uint32_t TJSONProtocol::readJSONInteger(NumberType &num) {
757
- uint32_t result = context_->read(reader_);
758
- if (context_->escapeNum()) {
759
- result += readJSONSyntaxChar(kJSONStringDelimiter);
760
- }
761
- std::string str;
762
- result += readJSONNumericChars(str);
763
- try {
764
- num = boost::lexical_cast<NumberType>(str);
765
- }
766
- catch (boost::bad_lexical_cast e) {
767
- throw new TProtocolException(TProtocolException::INVALID_DATA,
768
- "Expected numeric value; got \"" + str +
769
- "\"");
770
- }
771
- if (context_->escapeNum()) {
772
- result += readJSONSyntaxChar(kJSONStringDelimiter);
773
- }
774
- return result;
775
- }
776
-
777
- // Reads a JSON number or string and interprets it as a double.
778
- uint32_t TJSONProtocol::readJSONDouble(double &num) {
779
- uint32_t result = context_->read(reader_);
780
- std::string str;
781
- if (reader_.peek() == kJSONStringDelimiter) {
782
- result += readJSONString(str, true);
783
- // Check for NaN, Infinity and -Infinity
784
- if (str == kThriftNan) {
785
- num = HUGE_VAL/HUGE_VAL; // generates NaN
786
- }
787
- else if (str == kThriftInfinity) {
788
- num = HUGE_VAL;
789
- }
790
- else if (str == kThriftNegativeInfinity) {
791
- num = -HUGE_VAL;
792
- }
793
- else {
794
- if (!context_->escapeNum()) {
795
- // Throw exception -- we should not be in a string in this case
796
- throw new TProtocolException(TProtocolException::INVALID_DATA,
797
- "Numeric data unexpectedly quoted");
798
- }
799
- try {
800
- num = boost::lexical_cast<double>(str);
801
- }
802
- catch (boost::bad_lexical_cast e) {
803
- throw new TProtocolException(TProtocolException::INVALID_DATA,
804
- "Expected numeric value; got \"" + str +
805
- "\"");
806
- }
807
- }
808
- }
809
- else {
810
- if (context_->escapeNum()) {
811
- // This will throw - we should have had a quote if escapeNum == true
812
- readJSONSyntaxChar(kJSONStringDelimiter);
813
- }
814
- result += readJSONNumericChars(str);
815
- try {
816
- num = boost::lexical_cast<double>(str);
817
- }
818
- catch (boost::bad_lexical_cast e) {
819
- throw new TProtocolException(TProtocolException::INVALID_DATA,
820
- "Expected numeric value; got \"" + str +
821
- "\"");
822
- }
823
- }
824
- return result;
825
- }
826
-
827
- uint32_t TJSONProtocol::readJSONObjectStart() {
828
- uint32_t result = context_->read(reader_);
829
- result += readJSONSyntaxChar(kJSONObjectStart);
830
- pushContext(boost::shared_ptr<TJSONContext>(new JSONPairContext()));
831
- return result;
832
- }
833
-
834
- uint32_t TJSONProtocol::readJSONObjectEnd() {
835
- uint32_t result = readJSONSyntaxChar(kJSONObjectEnd);
836
- popContext();
837
- return result;
838
- }
839
-
840
- uint32_t TJSONProtocol::readJSONArrayStart() {
841
- uint32_t result = context_->read(reader_);
842
- result += readJSONSyntaxChar(kJSONArrayStart);
843
- pushContext(boost::shared_ptr<TJSONContext>(new JSONListContext()));
844
- return result;
845
- }
846
-
847
- uint32_t TJSONProtocol::readJSONArrayEnd() {
848
- uint32_t result = readJSONSyntaxChar(kJSONArrayEnd);
849
- popContext();
850
- return result;
851
- }
852
-
853
- uint32_t TJSONProtocol::readMessageBegin(std::string& name,
854
- TMessageType& messageType,
855
- int32_t& seqid) {
856
- uint32_t result = readJSONArrayStart();
857
- uint64_t tmpVal = 0;
858
- result += readJSONInteger(tmpVal);
859
- if (tmpVal != kThriftVersion1) {
860
- throw TProtocolException(TProtocolException::BAD_VERSION,
861
- "Message contained bad version.");
862
- }
863
- result += readJSONString(name);
864
- result += readJSONInteger(tmpVal);
865
- messageType = (TMessageType)tmpVal;
866
- result += readJSONInteger(tmpVal);
867
- seqid = tmpVal;
868
- return result;
869
- }
870
-
871
- uint32_t TJSONProtocol::readMessageEnd() {
872
- return readJSONArrayEnd();
873
- }
874
-
875
- uint32_t TJSONProtocol::readStructBegin(std::string& name) {
876
- return readJSONObjectStart();
877
- }
878
-
879
- uint32_t TJSONProtocol::readStructEnd() {
880
- return readJSONObjectEnd();
881
- }
882
-
883
- uint32_t TJSONProtocol::readFieldBegin(std::string& name,
884
- TType& fieldType,
885
- int16_t& fieldId) {
886
- uint32_t result = 0;
887
- // Check if we hit the end of the list
888
- uint8_t ch = reader_.peek();
889
- if (ch == kJSONObjectEnd) {
890
- fieldType = apache::thrift::protocol::T_STOP;
891
- }
892
- else {
893
- uint64_t tmpVal = 0;
894
- std::string tmpStr;
895
- result += readJSONInteger(tmpVal);
896
- fieldId = tmpVal;
897
- result += readJSONObjectStart();
898
- result += readJSONString(tmpStr);
899
- fieldType = getTypeIDForTypeName(tmpStr);
900
- }
901
- return result;
902
- }
903
-
904
- uint32_t TJSONProtocol::readFieldEnd() {
905
- return readJSONObjectEnd();
906
- }
907
-
908
- uint32_t TJSONProtocol::readMapBegin(TType& keyType,
909
- TType& valType,
910
- uint32_t& size) {
911
- uint64_t tmpVal = 0;
912
- std::string tmpStr;
913
- uint32_t result = readJSONArrayStart();
914
- result += readJSONString(tmpStr);
915
- keyType = getTypeIDForTypeName(tmpStr);
916
- result += readJSONString(tmpStr);
917
- valType = getTypeIDForTypeName(tmpStr);
918
- result += readJSONInteger(tmpVal);
919
- size = tmpVal;
920
- result += readJSONObjectStart();
921
- return result;
922
- }
923
-
924
- uint32_t TJSONProtocol::readMapEnd() {
925
- return readJSONObjectEnd() + readJSONArrayEnd();
926
- }
927
-
928
- uint32_t TJSONProtocol::readListBegin(TType& elemType,
929
- uint32_t& size) {
930
- uint64_t tmpVal = 0;
931
- std::string tmpStr;
932
- uint32_t result = readJSONArrayStart();
933
- result += readJSONString(tmpStr);
934
- elemType = getTypeIDForTypeName(tmpStr);
935
- result += readJSONInteger(tmpVal);
936
- size = tmpVal;
937
- return result;
938
- }
939
-
940
- uint32_t TJSONProtocol::readListEnd() {
941
- return readJSONArrayEnd();
942
- }
943
-
944
- uint32_t TJSONProtocol::readSetBegin(TType& elemType,
945
- uint32_t& size) {
946
- uint64_t tmpVal = 0;
947
- std::string tmpStr;
948
- uint32_t result = readJSONArrayStart();
949
- result += readJSONString(tmpStr);
950
- elemType = getTypeIDForTypeName(tmpStr);
951
- result += readJSONInteger(tmpVal);
952
- size = tmpVal;
953
- return result;
954
- }
955
-
956
- uint32_t TJSONProtocol::readSetEnd() {
957
- return readJSONArrayEnd();
958
- }
959
-
960
- uint32_t TJSONProtocol::readBool(bool& value) {
961
- return readJSONInteger(value);
962
- }
963
-
964
- // readByte() must be handled properly becuase boost::lexical cast sees int8_t
965
- // as a text type instead of an integer type
966
- uint32_t TJSONProtocol::readByte(int8_t& byte) {
967
- int16_t tmp = (int16_t) byte;
968
- uint32_t result = readJSONInteger(tmp);
969
- assert(tmp < 256);
970
- byte = (int8_t)tmp;
971
- return result;
972
- }
973
-
974
- uint32_t TJSONProtocol::readI16(int16_t& i16) {
975
- return readJSONInteger(i16);
976
- }
977
-
978
- uint32_t TJSONProtocol::readI32(int32_t& i32) {
979
- return readJSONInteger(i32);
980
- }
981
-
982
- uint32_t TJSONProtocol::readI64(int64_t& i64) {
983
- return readJSONInteger(i64);
984
- }
985
-
986
- uint32_t TJSONProtocol::readDouble(double& dub) {
987
- return readJSONDouble(dub);
988
- }
989
-
990
- uint32_t TJSONProtocol::readString(std::string &str) {
991
- return readJSONString(str);
992
- }
993
-
994
- uint32_t TJSONProtocol::readBinary(std::string &str) {
995
- return readJSONBase64(str);
996
- }
997
-
998
- }}} // apache::thrift::protocol