auser-poolparty 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. data/VERSION.yml +1 -1
  2. data/examples/monitored_cloud.rb +1 -1
  3. data/examples/thrift/thrift_example.rb +1 -1
  4. data/lib/proto/command_interface_handler.rb +1 -1
  5. data/vendor/gems/thrift/CHANGES +35 -0
  6. data/vendor/gems/thrift/CONTRIBUTORS +77 -0
  7. data/vendor/gems/thrift/DISCLAIMER +6 -0
  8. data/vendor/gems/thrift/LICENSE +202 -0
  9. data/vendor/gems/thrift/Makefile.am +28 -0
  10. data/vendor/gems/thrift/NEWS +79 -0
  11. data/vendor/gems/thrift/NOTICE +26 -0
  12. data/vendor/gems/thrift/README +137 -0
  13. data/vendor/gems/thrift/aclocal/ax_boost_base.m4 +198 -0
  14. data/vendor/gems/thrift/aclocal/ax_javac_and_java.m4 +107 -0
  15. data/vendor/gems/thrift/aclocal/ax_lib_event.m4 +194 -0
  16. data/vendor/gems/thrift/aclocal/ax_lib_zlib.m4 +173 -0
  17. data/vendor/gems/thrift/aclocal/ax_signed_right_shift.m4 +127 -0
  18. data/vendor/gems/thrift/aclocal/ax_thrift_internal.m4 +39 -0
  19. data/vendor/gems/thrift/bootstrap.sh +35 -0
  20. data/vendor/gems/thrift/cleanup.sh +58 -0
  21. data/vendor/gems/thrift/compiler/cpp/Makefile.am +136 -0
  22. data/vendor/gems/thrift/compiler/cpp/README +39 -0
  23. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cocoa_generator.cc +2331 -0
  24. data/vendor/gems/thrift/compiler/cpp/src/generate/t_cpp_generator.cc +3003 -0
  25. data/vendor/gems/thrift/compiler/cpp/src/generate/t_csharp_generator.cc +1700 -0
  26. data/vendor/gems/thrift/compiler/cpp/src/generate/t_erl_generator.cc +932 -0
  27. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.cc +173 -0
  28. data/vendor/gems/thrift/compiler/cpp/src/generate/t_generator.h +321 -0
  29. data/vendor/gems/thrift/compiler/cpp/src/generate/t_hs_generator.cc +1445 -0
  30. data/vendor/gems/thrift/compiler/cpp/src/generate/t_html_generator.cc +637 -0
  31. data/vendor/gems/thrift/compiler/cpp/src/generate/t_java_generator.cc +3069 -0
  32. data/vendor/gems/thrift/compiler/cpp/src/generate/t_ocaml_generator.cc +1673 -0
  33. data/vendor/gems/thrift/compiler/cpp/src/generate/t_oop_generator.h +77 -0
  34. data/vendor/gems/thrift/compiler/cpp/src/generate/t_perl_generator.cc +1812 -0
  35. data/vendor/gems/thrift/compiler/cpp/src/generate/t_php_generator.cc +2281 -0
  36. data/vendor/gems/thrift/compiler/cpp/src/generate/t_py_generator.cc +2310 -0
  37. data/vendor/gems/thrift/compiler/cpp/src/generate/t_rb_generator.cc +1114 -0
  38. data/vendor/gems/thrift/compiler/cpp/src/generate/t_st_generator.cc +1071 -0
  39. data/vendor/gems/thrift/compiler/cpp/src/generate/t_xsd_generator.cc +354 -0
  40. data/vendor/gems/thrift/compiler/cpp/src/globals.h +117 -0
  41. data/vendor/gems/thrift/compiler/cpp/src/main.cc +1207 -0
  42. data/vendor/gems/thrift/compiler/cpp/src/main.h +103 -0
  43. data/vendor/gems/thrift/compiler/cpp/src/md5.c +381 -0
  44. data/vendor/gems/thrift/compiler/cpp/src/md5.h +91 -0
  45. data/vendor/gems/thrift/compiler/cpp/src/parse/t_base_type.h +137 -0
  46. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const.h +59 -0
  47. data/vendor/gems/thrift/compiler/cpp/src/parse/t_const_value.h +121 -0
  48. data/vendor/gems/thrift/compiler/cpp/src/parse/t_container.h +56 -0
  49. data/vendor/gems/thrift/compiler/cpp/src/parse/t_doc.h +51 -0
  50. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum.h +59 -0
  51. data/vendor/gems/thrift/compiler/cpp/src/parse/t_enum_value.h +64 -0
  52. data/vendor/gems/thrift/compiler/cpp/src/parse/t_field.h +150 -0
  53. data/vendor/gems/thrift/compiler/cpp/src/parse/t_function.h +93 -0
  54. data/vendor/gems/thrift/compiler/cpp/src/parse/t_list.h +56 -0
  55. data/vendor/gems/thrift/compiler/cpp/src/parse/t_map.h +64 -0
  56. data/vendor/gems/thrift/compiler/cpp/src/parse/t_program.h +223 -0
  57. data/vendor/gems/thrift/compiler/cpp/src/parse/t_scope.h +86 -0
  58. data/vendor/gems/thrift/compiler/cpp/src/parse/t_service.h +68 -0
  59. data/vendor/gems/thrift/compiler/cpp/src/parse/t_set.h +55 -0
  60. data/vendor/gems/thrift/compiler/cpp/src/parse/t_struct.h +127 -0
  61. data/vendor/gems/thrift/compiler/cpp/src/parse/t_type.h +176 -0
  62. data/vendor/gems/thrift/compiler/cpp/src/parse/t_typedef.h +70 -0
  63. data/vendor/gems/thrift/compiler/cpp/src/platform.h +36 -0
  64. data/vendor/gems/thrift/compiler/cpp/src/thriftl.ll +303 -0
  65. data/vendor/gems/thrift/compiler/cpp/src/thrifty.yy +1140 -0
  66. data/vendor/gems/thrift/configure.ac +255 -0
  67. data/vendor/gems/thrift/contrib/fb303/LICENSE +16 -0
  68. data/vendor/gems/thrift/contrib/fb303/Makefile.am +31 -0
  69. data/vendor/gems/thrift/contrib/fb303/README +37 -0
  70. data/vendor/gems/thrift/contrib/fb303/acinclude.m4 +258 -0
  71. data/vendor/gems/thrift/contrib/fb303/aclocal/ax_boost_base.m4 +198 -0
  72. data/vendor/gems/thrift/contrib/fb303/bootstrap.sh +26 -0
  73. data/vendor/gems/thrift/contrib/fb303/configure.ac +115 -0
  74. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.cpp +124 -0
  75. data/vendor/gems/thrift/contrib/fb303/cpp/FacebookBase.h +103 -0
  76. data/vendor/gems/thrift/contrib/fb303/cpp/Makefile.am +84 -0
  77. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.cpp +481 -0
  78. data/vendor/gems/thrift/contrib/fb303/cpp/ServiceTracker.h +215 -0
  79. data/vendor/gems/thrift/contrib/fb303/global_footer.mk +21 -0
  80. data/vendor/gems/thrift/contrib/fb303/global_header.mk +38 -0
  81. data/vendor/gems/thrift/contrib/fb303/if/fb303.thrift +112 -0
  82. data/vendor/gems/thrift/contrib/fb303/java/FacebookBase.java +103 -0
  83. data/vendor/gems/thrift/contrib/fb303/java/build.xml +84 -0
  84. data/vendor/gems/thrift/contrib/fb303/php/FacebookBase.php +89 -0
  85. data/vendor/gems/thrift/contrib/fb303/py/Makefile.am +44 -0
  86. data/vendor/gems/thrift/contrib/fb303/py/fb303/FacebookBase.py +82 -0
  87. data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/__init__.py +20 -0
  88. data/vendor/gems/thrift/contrib/fb303/py/fb303_scripts/fb303_simple_mgmt.py +195 -0
  89. data/vendor/gems/thrift/contrib/fb303/py/setup.py +27 -0
  90. data/vendor/gems/thrift/contrib/thrift.el +126 -0
  91. data/vendor/gems/thrift/contrib/thrift.spec +206 -0
  92. data/vendor/gems/thrift/contrib/thrift.vim +91 -0
  93. data/vendor/gems/thrift/contrib/thrift_dump.cpp +91 -0
  94. data/vendor/gems/thrift/doc/lgpl-2.1.txt +504 -0
  95. data/vendor/gems/thrift/doc/otp-base-license.txt +20 -0
  96. data/vendor/gems/thrift/doc/thrift.bnf +96 -0
  97. data/vendor/gems/thrift/doc/thrift.tex +1057 -0
  98. data/vendor/gems/thrift/lib/Makefile.am +55 -0
  99. data/vendor/gems/thrift/lib/cocoa/README +21 -0
  100. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.h +44 -0
  101. data/vendor/gems/thrift/lib/cocoa/src/TApplicationException.m +130 -0
  102. data/vendor/gems/thrift/lib/cocoa/src/TException.h +34 -0
  103. data/vendor/gems/thrift/lib/cocoa/src/TException.m +64 -0
  104. data/vendor/gems/thrift/lib/cocoa/src/TProcessor.h +29 -0
  105. data/vendor/gems/thrift/lib/cocoa/src/TProcessorFactory.h +27 -0
  106. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.h +27 -0
  107. data/vendor/gems/thrift/lib/cocoa/src/TSharedProcessorFactory.m +51 -0
  108. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.h +51 -0
  109. data/vendor/gems/thrift/lib/cocoa/src/protocol/TBinaryProtocol.m +477 -0
  110. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocol.h +148 -0
  111. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.h +25 -0
  112. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolException.m +23 -0
  113. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolFactory.h +29 -0
  114. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.h +29 -0
  115. data/vendor/gems/thrift/lib/cocoa/src/protocol/TProtocolUtil.m +104 -0
  116. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.h +50 -0
  117. data/vendor/gems/thrift/lib/cocoa/src/server/TSocketServer.m +153 -0
  118. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.h +42 -0
  119. data/vendor/gems/thrift/lib/cocoa/src/transport/THTTPClient.m +159 -0
  120. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.h +35 -0
  121. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSFileHandleTransport.m +91 -0
  122. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.h +38 -0
  123. data/vendor/gems/thrift/lib/cocoa/src/transport/TNSStreamTransport.m +89 -0
  124. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.h +32 -0
  125. data/vendor/gems/thrift/lib/cocoa/src/transport/TSocketClient.m +58 -0
  126. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransport.h +36 -0
  127. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.h +30 -0
  128. data/vendor/gems/thrift/lib/cocoa/src/transport/TTransportException.m +43 -0
  129. data/vendor/gems/thrift/lib/cpp/Makefile.am +158 -0
  130. data/vendor/gems/thrift/lib/cpp/README +67 -0
  131. data/vendor/gems/thrift/lib/cpp/src/TLogging.h +163 -0
  132. data/vendor/gems/thrift/lib/cpp/src/TProcessor.h +53 -0
  133. data/vendor/gems/thrift/lib/cpp/src/TReflectionLocal.h +96 -0
  134. data/vendor/gems/thrift/lib/cpp/src/Thrift.cpp +148 -0
  135. data/vendor/gems/thrift/lib/cpp/src/Thrift.h +191 -0
  136. data/vendor/gems/thrift/lib/cpp/src/concurrency/Exception.h +60 -0
  137. data/vendor/gems/thrift/lib/cpp/src/concurrency/FunctionRunner.h +77 -0
  138. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.cpp +137 -0
  139. data/vendor/gems/thrift/lib/cpp/src/concurrency/Monitor.h +84 -0
  140. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.cpp +160 -0
  141. data/vendor/gems/thrift/lib/cpp/src/concurrency/Mutex.h +114 -0
  142. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.cpp +314 -0
  143. data/vendor/gems/thrift/lib/cpp/src/concurrency/PosixThreadFactory.h +130 -0
  144. data/vendor/gems/thrift/lib/cpp/src/concurrency/Thread.h +125 -0
  145. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.cpp +493 -0
  146. data/vendor/gems/thrift/lib/cpp/src/concurrency/ThreadManager.h +169 -0
  147. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.cpp +284 -0
  148. data/vendor/gems/thrift/lib/cpp/src/concurrency/TimerManager.h +122 -0
  149. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.cpp +55 -0
  150. data/vendor/gems/thrift/lib/cpp/src/concurrency/Util.h +100 -0
  151. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/Tests.cpp +155 -0
  152. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadFactoryTests.h +354 -0
  153. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/ThreadManagerTests.h +379 -0
  154. data/vendor/gems/thrift/lib/cpp/src/concurrency/test/TimerManagerTests.h +155 -0
  155. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.cpp +122 -0
  156. data/vendor/gems/thrift/lib/cpp/src/processor/PeekProcessor.h +77 -0
  157. data/vendor/gems/thrift/lib/cpp/src/processor/StatsProcessor.h +264 -0
  158. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.cpp +79 -0
  159. data/vendor/gems/thrift/lib/cpp/src/protocol/TBase64Utils.h +42 -0
  160. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.cpp +394 -0
  161. data/vendor/gems/thrift/lib/cpp/src/protocol/TBinaryProtocol.h +254 -0
  162. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.cpp +736 -0
  163. data/vendor/gems/thrift/lib/cpp/src/protocol/TCompactProtocol.h +279 -0
  164. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.cpp +346 -0
  165. data/vendor/gems/thrift/lib/cpp/src/protocol/TDebugProtocol.h +225 -0
  166. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.cpp +762 -0
  167. data/vendor/gems/thrift/lib/cpp/src/protocol/TDenseProtocol.h +253 -0
  168. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.cpp +998 -0
  169. data/vendor/gems/thrift/lib/cpp/src/protocol/TJSONProtocol.h +340 -0
  170. data/vendor/gems/thrift/lib/cpp/src/protocol/TOneWayProtocol.h +304 -0
  171. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocol.h +438 -0
  172. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolException.h +104 -0
  173. data/vendor/gems/thrift/lib/cpp/src/protocol/TProtocolTap.h +187 -0
  174. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.cpp +750 -0
  175. data/vendor/gems/thrift/lib/cpp/src/server/TNonblockingServer.h +435 -0
  176. data/vendor/gems/thrift/lib/cpp/src/server/TServer.cpp +38 -0
  177. data/vendor/gems/thrift/lib/cpp/src/server/TServer.h +213 -0
  178. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.cpp +118 -0
  179. data/vendor/gems/thrift/lib/cpp/src/server/TSimpleServer.h +70 -0
  180. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.cpp +217 -0
  181. data/vendor/gems/thrift/lib/cpp/src/server/TThreadPoolServer.h +79 -0
  182. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.cpp +243 -0
  183. data/vendor/gems/thrift/lib/cpp/src/server/TThreadedServer.h +74 -0
  184. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.cpp +370 -0
  185. data/vendor/gems/thrift/lib/cpp/src/transport/TBufferTransports.h +667 -0
  186. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.cpp +77 -0
  187. data/vendor/gems/thrift/lib/cpp/src/transport/TFDTransport.h +73 -0
  188. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.cpp +953 -0
  189. data/vendor/gems/thrift/lib/cpp/src/transport/TFileTransport.h +442 -0
  190. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.cpp +348 -0
  191. data/vendor/gems/thrift/lib/cpp/src/transport/THttpClient.h +111 -0
  192. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.cpp +368 -0
  193. data/vendor/gems/thrift/lib/cpp/src/transport/TServerSocket.h +76 -0
  194. data/vendor/gems/thrift/lib/cpp/src/transport/TServerTransport.h +92 -0
  195. data/vendor/gems/thrift/lib/cpp/src/transport/TShortReadTransport.h +96 -0
  196. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.cpp +54 -0
  197. data/vendor/gems/thrift/lib/cpp/src/transport/TSimpleFileTransport.h +41 -0
  198. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.cpp +591 -0
  199. data/vendor/gems/thrift/lib/cpp/src/transport/TSocket.h +242 -0
  200. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.cpp +235 -0
  201. data/vendor/gems/thrift/lib/cpp/src/transport/TSocketPool.h +191 -0
  202. data/vendor/gems/thrift/lib/cpp/src/transport/TTransport.h +224 -0
  203. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.cpp +31 -0
  204. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportException.h +117 -0
  205. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.cpp +178 -0
  206. data/vendor/gems/thrift/lib/cpp/src/transport/TTransportUtils.h +287 -0
  207. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.cpp +299 -0
  208. data/vendor/gems/thrift/lib/cpp/src/transport/TZlibTransport.h +219 -0
  209. data/vendor/gems/thrift/lib/cpp/thrift-nb.pc.in +30 -0
  210. data/vendor/gems/thrift/lib/cpp/thrift-z.pc.in +30 -0
  211. data/vendor/gems/thrift/lib/cpp/thrift.pc.in +29 -0
  212. data/vendor/gems/thrift/lib/csharp/Makefile.am +70 -0
  213. data/vendor/gems/thrift/lib/csharp/README +26 -0
  214. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/Properties/AssemblyInfo.cs +55 -0
  215. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftBuild.cs +242 -0
  216. data/vendor/gems/thrift/lib/csharp/ThriftMSBuildTask/ThriftMSBuildTask.csproj +62 -0
  217. data/vendor/gems/thrift/lib/csharp/src/Collections/THashSet.cs +142 -0
  218. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBase.cs +34 -0
  219. data/vendor/gems/thrift/lib/csharp/src/Protocol/TBinaryProtocol.cs +392 -0
  220. data/vendor/gems/thrift/lib/csharp/src/Protocol/TField.cs +58 -0
  221. data/vendor/gems/thrift/lib/csharp/src/Protocol/TList.cs +50 -0
  222. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMap.cs +58 -0
  223. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessage.cs +58 -0
  224. data/vendor/gems/thrift/lib/csharp/src/Protocol/TMessageType.cs +31 -0
  225. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocol.cs +87 -0
  226. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolException.cs +61 -0
  227. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolFactory.cs +29 -0
  228. data/vendor/gems/thrift/lib/csharp/src/Protocol/TProtocolUtil.cs +94 -0
  229. data/vendor/gems/thrift/lib/csharp/src/Protocol/TSet.cs +50 -0
  230. data/vendor/gems/thrift/lib/csharp/src/Protocol/TStruct.cs +42 -0
  231. data/vendor/gems/thrift/lib/csharp/src/Protocol/TType.cs +40 -0
  232. data/vendor/gems/thrift/lib/csharp/src/Server/TServer.cs +135 -0
  233. data/vendor/gems/thrift/lib/csharp/src/Server/TSimpleServer.cs +148 -0
  234. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadPoolServer.cs +186 -0
  235. data/vendor/gems/thrift/lib/csharp/src/Server/TThreadedServer.cs +234 -0
  236. data/vendor/gems/thrift/lib/csharp/src/TApplicationException.cs +131 -0
  237. data/vendor/gems/thrift/lib/csharp/src/TProcessor.cs +29 -0
  238. data/vendor/gems/thrift/lib/csharp/src/Thrift.csproj +73 -0
  239. data/vendor/gems/thrift/lib/csharp/src/Thrift.sln +35 -0
  240. data/vendor/gems/thrift/lib/csharp/src/Transport/TBufferedTransport.cs +100 -0
  241. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerSocket.cs +157 -0
  242. data/vendor/gems/thrift/lib/csharp/src/Transport/TServerTransport.cs +39 -0
  243. data/vendor/gems/thrift/lib/csharp/src/Transport/TSocket.cs +144 -0
  244. data/vendor/gems/thrift/lib/csharp/src/Transport/TStreamTransport.cs +103 -0
  245. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransport.cs +66 -0
  246. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportException.cs +64 -0
  247. data/vendor/gems/thrift/lib/csharp/src/Transport/TTransportFactory.cs +38 -0
  248. data/vendor/gems/thrift/lib/erl/Makefile +37 -0
  249. data/vendor/gems/thrift/lib/erl/README +56 -0
  250. data/vendor/gems/thrift/lib/erl/build/beamver +59 -0
  251. data/vendor/gems/thrift/lib/erl/build/buildtargets.mk +15 -0
  252. data/vendor/gems/thrift/lib/erl/build/colors.mk +24 -0
  253. data/vendor/gems/thrift/lib/erl/build/docs.mk +12 -0
  254. data/vendor/gems/thrift/lib/erl/build/mime.types +98 -0
  255. data/vendor/gems/thrift/lib/erl/build/otp.mk +146 -0
  256. data/vendor/gems/thrift/lib/erl/build/otp_subdir.mk +85 -0
  257. data/vendor/gems/thrift/lib/erl/build/raw_test.mk +29 -0
  258. data/vendor/gems/thrift/lib/erl/include/thrift_constants.hrl +54 -0
  259. data/vendor/gems/thrift/lib/erl/include/thrift_protocol.hrl +31 -0
  260. data/vendor/gems/thrift/lib/erl/src/Makefile +116 -0
  261. data/vendor/gems/thrift/lib/erl/src/test_handler.erl +26 -0
  262. data/vendor/gems/thrift/lib/erl/src/test_service.erl +29 -0
  263. data/vendor/gems/thrift/lib/erl/src/thrift.app.src +44 -0
  264. data/vendor/gems/thrift/lib/erl/src/thrift.appup.src +1 -0
  265. data/vendor/gems/thrift/lib/erl/src/thrift_base64_transport.erl +64 -0
  266. data/vendor/gems/thrift/lib/erl/src/thrift_binary_protocol.erl +325 -0
  267. data/vendor/gems/thrift/lib/erl/src/thrift_buffered_transport.erl +180 -0
  268. data/vendor/gems/thrift/lib/erl/src/thrift_client.erl +384 -0
  269. data/vendor/gems/thrift/lib/erl/src/thrift_disk_log_transport.erl +118 -0
  270. data/vendor/gems/thrift/lib/erl/src/thrift_file_transport.erl +87 -0
  271. data/vendor/gems/thrift/lib/erl/src/thrift_framed_transport.erl +208 -0
  272. data/vendor/gems/thrift/lib/erl/src/thrift_http_transport.erl +199 -0
  273. data/vendor/gems/thrift/lib/erl/src/thrift_memory_buffer.erl +164 -0
  274. data/vendor/gems/thrift/lib/erl/src/thrift_processor.erl +188 -0
  275. data/vendor/gems/thrift/lib/erl/src/thrift_protocol.erl +356 -0
  276. data/vendor/gems/thrift/lib/erl/src/thrift_server.erl +183 -0
  277. data/vendor/gems/thrift/lib/erl/src/thrift_service.erl +25 -0
  278. data/vendor/gems/thrift/lib/erl/src/thrift_socket_server.erl +249 -0
  279. data/vendor/gems/thrift/lib/erl/src/thrift_socket_transport.erl +119 -0
  280. data/vendor/gems/thrift/lib/erl/src/thrift_transport.erl +57 -0
  281. data/vendor/gems/thrift/lib/erl/vsn.mk +1 -0
  282. data/vendor/gems/thrift/lib/hs/README +82 -0
  283. data/vendor/gems/thrift/lib/hs/Setup.lhs +23 -0
  284. data/vendor/gems/thrift/lib/hs/TODO +2 -0
  285. data/vendor/gems/thrift/lib/hs/Thrift.cabal +20 -0
  286. data/vendor/gems/thrift/lib/hs/src/Thrift.hs +111 -0
  287. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol.hs +191 -0
  288. data/vendor/gems/thrift/lib/hs/src/Thrift/Protocol/Binary.hs +147 -0
  289. data/vendor/gems/thrift/lib/hs/src/Thrift/Server.hs +65 -0
  290. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport.hs +60 -0
  291. data/vendor/gems/thrift/lib/hs/src/Thrift/Transport/Handle.hs +58 -0
  292. data/vendor/gems/thrift/lib/java/Makefile.am +38 -0
  293. data/vendor/gems/thrift/lib/java/README +43 -0
  294. data/vendor/gems/thrift/lib/java/build.xml +195 -0
  295. data/vendor/gems/thrift/lib/java/ivy.xml +8 -0
  296. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/IntRangeSet.java +171 -0
  297. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TApplicationException.java +123 -0
  298. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBase.java +66 -0
  299. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TBaseHelper.java +102 -0
  300. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TByteArrayOutputStream.java +46 -0
  301. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TDeserializer.java +94 -0
  302. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TException.java +45 -0
  303. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TFieldRequirementType.java +30 -0
  304. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessor.java +32 -0
  305. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TProcessorFactory.java +39 -0
  306. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/TSerializer.java +110 -0
  307. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldMetaData.java +69 -0
  308. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/FieldValueMetaData.java +42 -0
  309. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/ListMetaData.java +29 -0
  310. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/MapMetaData.java +31 -0
  311. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/SetMetaData.java +29 -0
  312. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/meta_data/StructMetaData.java +31 -0
  313. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBase64Utils.java +128 -0
  314. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TBinaryProtocol.java +331 -0
  315. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TCompactProtocol.java +741 -0
  316. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TField.java +48 -0
  317. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TJSONProtocol.java +927 -0
  318. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TList.java +38 -0
  319. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMap.java +40 -0
  320. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessage.java +48 -0
  321. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TMessageType.java +31 -0
  322. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocol.java +146 -0
  323. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolException.java +81 -0
  324. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolFactory.java +30 -0
  325. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TProtocolUtil.java +158 -0
  326. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSet.java +42 -0
  327. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TSimpleJSONProtocol.java +384 -0
  328. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TStruct.java +36 -0
  329. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/protocol/TType.java +40 -0
  330. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/THsHaServer.java +304 -0
  331. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TNonblockingServer.java +772 -0
  332. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TServer.java +126 -0
  333. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TSimpleServer.java +145 -0
  334. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/server/TThreadPoolServer.java +271 -0
  335. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TFramedTransport.java +126 -0
  336. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/THttpClient.java +157 -0
  337. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TIOStreamTransport.java +159 -0
  338. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TMemoryBuffer.java +98 -0
  339. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerSocket.java +160 -0
  340. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingServerTransport.java +31 -0
  341. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingSocket.java +213 -0
  342. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TNonblockingTransport.java +31 -0
  343. data/vendor/gems/thrift/lib/java/src/org/apache/thrift/transport/TServerSocket.java +145 -0
  344. metadata +348 -37
  345. data/vendor/gems/trollop/FAQ.txt +0 -35
  346. data/vendor/gems/trollop/History.txt +0 -84
  347. data/vendor/gems/trollop/Manifest.txt +0 -7
  348. data/vendor/gems/trollop/README.txt +0 -38
  349. data/vendor/gems/trollop/Rakefile +0 -36
  350. data/vendor/gems/trollop/lib/trollop.rb +0 -695
  351. data/vendor/gems/trollop/release-script.txt +0 -13
  352. data/vendor/gems/trollop/test/test_trollop.rb +0 -957
  353. data/vendor/gems/trollop/www/index.html +0 -167
@@ -0,0 +1,48 @@
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
+ package org.apache.thrift.protocol;
21
+
22
+ /**
23
+ * Helper class that encapsulates field metadata.
24
+ *
25
+ */
26
+ public class TField {
27
+ public TField() {
28
+ this("", TType.STOP, (short)0);
29
+ }
30
+
31
+ public TField(String n, byte t, short i) {
32
+ name = n;
33
+ type = t;
34
+ id = i;
35
+ }
36
+
37
+ public final String name;
38
+ public final byte type;
39
+ public final short id;
40
+
41
+ public String toString() {
42
+ return "<TField name:'" + name + "' type:" + type + " field-id:" + id + ">";
43
+ }
44
+
45
+ public boolean equals(TField otherField) {
46
+ return type == otherField.type && id == otherField.id;
47
+ }
48
+ }
@@ -0,0 +1,927 @@
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
+ package org.apache.thrift.protocol;
21
+
22
+ import org.apache.thrift.TException;
23
+ import org.apache.thrift.TByteArrayOutputStream;
24
+ import org.apache.thrift.transport.TTransport;
25
+ import java.io.UnsupportedEncodingException;
26
+ import java.util.Stack;
27
+
28
+ /**
29
+ * JSON protocol implementation for thrift.
30
+ *
31
+ * This is a full-featured protocol supporting write and read.
32
+ *
33
+ * Please see the C++ class header for a detailed description of the
34
+ * protocol's wire format.
35
+ *
36
+ */
37
+ public class TJSONProtocol extends TProtocol {
38
+
39
+ /**
40
+ * Factory for JSON protocol objects
41
+ */
42
+ public static class Factory implements TProtocolFactory {
43
+
44
+ public TProtocol getProtocol(TTransport trans) {
45
+ return new TJSONProtocol(trans);
46
+ }
47
+
48
+ }
49
+
50
+ private static final byte[] COMMA = new byte[] {','};
51
+ private static final byte[] COLON = new byte[] {':'};
52
+ private static final byte[] LBRACE = new byte[] {'{'};
53
+ private static final byte[] RBRACE = new byte[] {'}'};
54
+ private static final byte[] LBRACKET = new byte[] {'['};
55
+ private static final byte[] RBRACKET = new byte[] {']'};
56
+ private static final byte[] QUOTE = new byte[] {'"'};
57
+ private static final byte[] BACKSLASH = new byte[] {'\\'};
58
+ private static final byte[] ZERO = new byte[] {'0'};
59
+
60
+ private static final byte[] ESCSEQ = new byte[] {'\\','u','0','0'};
61
+
62
+ private static final long VERSION = 1;
63
+
64
+ private static final byte[] JSON_CHAR_TABLE = {
65
+ /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
66
+ 0, 0, 0, 0, 0, 0, 0, 0,'b','t','n', 0,'f','r', 0, 0, // 0
67
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
68
+ 1, 1,'"', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
69
+ };
70
+
71
+ private static final String ESCAPE_CHARS = "\"\\bfnrt";
72
+
73
+ private static final byte[] ESCAPE_CHAR_VALS = {
74
+ '"', '\\', '\b', '\f', '\n', '\r', '\t',
75
+ };
76
+
77
+ private static final int DEF_STRING_SIZE = 16;
78
+
79
+ private static final byte[] NAME_BOOL = new byte[] {'t', 'f'};
80
+ private static final byte[] NAME_BYTE = new byte[] {'i','8'};
81
+ private static final byte[] NAME_I16 = new byte[] {'i','1','6'};
82
+ private static final byte[] NAME_I32 = new byte[] {'i','3','2'};
83
+ private static final byte[] NAME_I64 = new byte[] {'i','6','4'};
84
+ private static final byte[] NAME_DOUBLE = new byte[] {'d','b','l'};
85
+ private static final byte[] NAME_STRUCT = new byte[] {'r','e','c'};
86
+ private static final byte[] NAME_STRING = new byte[] {'s','t','r'};
87
+ private static final byte[] NAME_MAP = new byte[] {'m','a','p'};
88
+ private static final byte[] NAME_LIST = new byte[] {'l','s','t'};
89
+ private static final byte[] NAME_SET = new byte[] {'s','e','t'};
90
+
91
+ private static final TStruct ANONYMOUS_STRUCT = new TStruct();
92
+
93
+ private static final byte[] getTypeNameForTypeID(byte typeID)
94
+ throws TException {
95
+ switch (typeID) {
96
+ case TType.BOOL:
97
+ return NAME_BOOL;
98
+ case TType.BYTE:
99
+ return NAME_BYTE;
100
+ case TType.I16:
101
+ return NAME_I16;
102
+ case TType.I32:
103
+ return NAME_I32;
104
+ case TType.I64:
105
+ return NAME_I64;
106
+ case TType.DOUBLE:
107
+ return NAME_DOUBLE;
108
+ case TType.STRING:
109
+ return NAME_STRING;
110
+ case TType.STRUCT:
111
+ return NAME_STRUCT;
112
+ case TType.MAP:
113
+ return NAME_MAP;
114
+ case TType.SET:
115
+ return NAME_SET;
116
+ case TType.LIST:
117
+ return NAME_LIST;
118
+ default:
119
+ throw new TProtocolException(TProtocolException.NOT_IMPLEMENTED,
120
+ "Unrecognized type");
121
+ }
122
+ }
123
+
124
+ private static final byte getTypeIDForTypeName(byte[] name)
125
+ throws TException {
126
+ byte result = TType.STOP;
127
+ if (name.length > 1) {
128
+ switch (name[0]) {
129
+ case 'd':
130
+ result = TType.DOUBLE;
131
+ break;
132
+ case 'i':
133
+ switch (name[1]) {
134
+ case '8':
135
+ result = TType.BYTE;
136
+ break;
137
+ case '1':
138
+ result = TType.I16;
139
+ break;
140
+ case '3':
141
+ result = TType.I32;
142
+ break;
143
+ case '6':
144
+ result = TType.I64;
145
+ break;
146
+ }
147
+ break;
148
+ case 'l':
149
+ result = TType.LIST;
150
+ break;
151
+ case 'm':
152
+ result = TType.MAP;
153
+ break;
154
+ case 'r':
155
+ result = TType.STRUCT;
156
+ break;
157
+ case 's':
158
+ if (name[1] == 't') {
159
+ result = TType.STRING;
160
+ }
161
+ else if (name[1] == 'e') {
162
+ result = TType.SET;
163
+ }
164
+ break;
165
+ case 't':
166
+ result = TType.BOOL;
167
+ break;
168
+ }
169
+ }
170
+ if (result == TType.STOP) {
171
+ throw new TProtocolException(TProtocolException.NOT_IMPLEMENTED,
172
+ "Unrecognized type");
173
+ }
174
+ return result;
175
+ }
176
+
177
+ // Base class for tracking JSON contexts that may require inserting/reading
178
+ // additional JSON syntax characters
179
+ // This base context does nothing.
180
+ protected class JSONBaseContext {
181
+ protected void write() throws TException {}
182
+
183
+ protected void read() throws TException {}
184
+
185
+ protected boolean escapeNum() { return false; }
186
+ }
187
+
188
+ // Context for JSON lists. Will insert/read commas before each item except
189
+ // for the first one
190
+ protected class JSONListContext extends JSONBaseContext {
191
+ private boolean first_ = true;
192
+
193
+ @Override
194
+ protected void write() throws TException {
195
+ if (first_) {
196
+ first_ = false;
197
+ } else {
198
+ trans_.write(COMMA);
199
+ }
200
+ }
201
+
202
+ @Override
203
+ protected void read() throws TException {
204
+ if (first_) {
205
+ first_ = false;
206
+ } else {
207
+ readJSONSyntaxChar(COMMA);
208
+ }
209
+ }
210
+ }
211
+
212
+ // Context for JSON records. Will insert/read colons before the value portion
213
+ // of each record pair, and commas before each key except the first. In
214
+ // addition, will indicate that numbers in the key position need to be
215
+ // escaped in quotes (since JSON keys must be strings).
216
+ protected class JSONPairContext extends JSONBaseContext {
217
+ private boolean first_ = true;
218
+ private boolean colon_ = true;
219
+
220
+ @Override
221
+ protected void write() throws TException {
222
+ if (first_) {
223
+ first_ = false;
224
+ colon_ = true;
225
+ } else {
226
+ trans_.write(colon_ ? COLON : COMMA);
227
+ colon_ = !colon_;
228
+ }
229
+ }
230
+
231
+ @Override
232
+ protected void read() throws TException {
233
+ if (first_) {
234
+ first_ = false;
235
+ colon_ = true;
236
+ } else {
237
+ readJSONSyntaxChar(colon_ ? COLON : COMMA);
238
+ colon_ = !colon_;
239
+ }
240
+ }
241
+
242
+ @Override
243
+ protected boolean escapeNum() {
244
+ return colon_;
245
+ }
246
+ }
247
+
248
+ // Holds up to one byte from the transport
249
+ protected class LookaheadReader {
250
+
251
+ private boolean hasData_;
252
+ private byte[] data_ = new byte[1];
253
+
254
+ // Return and consume the next byte to be read, either taking it from the
255
+ // data buffer if present or getting it from the transport otherwise.
256
+ protected byte read() throws TException {
257
+ if (hasData_) {
258
+ hasData_ = false;
259
+ }
260
+ else {
261
+ trans_.readAll(data_, 0, 1);
262
+ }
263
+ return data_[0];
264
+ }
265
+
266
+ // Return the next byte to be read without consuming, filling the data
267
+ // buffer if it has not been filled already.
268
+ protected byte peek() throws TException {
269
+ if (!hasData_) {
270
+ trans_.readAll(data_, 0, 1);
271
+ }
272
+ hasData_ = true;
273
+ return data_[0];
274
+ }
275
+ }
276
+
277
+ // Stack of nested contexts that we may be in
278
+ private Stack<JSONBaseContext> contextStack_ = new Stack<JSONBaseContext>();
279
+
280
+ // Current context that we are in
281
+ private JSONBaseContext context_ = new JSONBaseContext();
282
+
283
+ // Reader that manages a 1-byte buffer
284
+ private LookaheadReader reader_ = new LookaheadReader();
285
+
286
+ // Push a new JSON context onto the stack.
287
+ private void pushContext(JSONBaseContext c) {
288
+ contextStack_.push(context_);
289
+ context_ = c;
290
+ }
291
+
292
+ // Pop the last JSON context off the stack
293
+ private void popContext() {
294
+ context_ = contextStack_.pop();
295
+ }
296
+
297
+ /**
298
+ * Constructor
299
+ */
300
+ public TJSONProtocol(TTransport trans) {
301
+ super(trans);
302
+ }
303
+
304
+ // Temporary buffer used by several methods
305
+ private byte[] tmpbuf_ = new byte[4];
306
+
307
+ // Read a byte that must match b[0]; otherwise an excpetion is thrown.
308
+ // Marked protected to avoid synthetic accessor in JSONListContext.read
309
+ // and JSONPairContext.read
310
+ protected void readJSONSyntaxChar(byte[] b) throws TException {
311
+ byte ch = reader_.read();
312
+ if (ch != b[0]) {
313
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
314
+ "Unexpected character:" + (char)ch);
315
+ }
316
+ }
317
+
318
+ // Convert a byte containing a hex char ('0'-'9' or 'a'-'f') into its
319
+ // corresponding hex value
320
+ private static final byte hexVal(byte ch) throws TException {
321
+ if ((ch >= '0') && (ch <= '9')) {
322
+ return (byte)((char)ch - '0');
323
+ }
324
+ else if ((ch >= 'a') && (ch <= 'f')) {
325
+ return (byte)((char)ch - 'a');
326
+ }
327
+ else {
328
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
329
+ "Expected hex character");
330
+ }
331
+ }
332
+
333
+ // Convert a byte containing a hex value to its corresponding hex character
334
+ private static final byte hexChar(byte val) {
335
+ val &= 0x0F;
336
+ if (val < 10) {
337
+ return (byte)((char)val + '0');
338
+ }
339
+ else {
340
+ return (byte)((char)val + 'a');
341
+ }
342
+ }
343
+
344
+ // Write the bytes in array buf as a JSON characters, escaping as needed
345
+ private void writeJSONString(byte[] b) throws TException {
346
+ context_.write();
347
+ trans_.write(QUOTE);
348
+ int len = b.length;
349
+ for (int i = 0; i < len; i++) {
350
+ if ((b[i] & 0x00FF) >= 0x30) {
351
+ if (b[i] == BACKSLASH[0]) {
352
+ trans_.write(BACKSLASH);
353
+ trans_.write(BACKSLASH);
354
+ }
355
+ else {
356
+ trans_.write(b, i, 1);
357
+ }
358
+ }
359
+ else {
360
+ tmpbuf_[0] = JSON_CHAR_TABLE[b[i]];
361
+ if (tmpbuf_[0] == 1) {
362
+ trans_.write(b, i, 1);
363
+ }
364
+ else if (tmpbuf_[0] > 1) {
365
+ trans_.write(BACKSLASH);
366
+ trans_.write(tmpbuf_, 0, 1);
367
+ }
368
+ else {
369
+ trans_.write(ESCSEQ);
370
+ tmpbuf_[0] = hexChar((byte)(b[i] >> 4));
371
+ tmpbuf_[1] = hexChar(b[i]);
372
+ trans_.write(tmpbuf_, 0, 2);
373
+ }
374
+ }
375
+ }
376
+ trans_.write(QUOTE);
377
+ }
378
+
379
+ // Write out number as a JSON value. If the context dictates so, it will be
380
+ // wrapped in quotes to output as a JSON string.
381
+ private void writeJSONInteger(long num) throws TException {
382
+ context_.write();
383
+ String str = Long.toString(num);
384
+ boolean escapeNum = context_.escapeNum();
385
+ if (escapeNum) {
386
+ trans_.write(QUOTE);
387
+ }
388
+ try {
389
+ byte[] buf = str.getBytes("UTF-8");
390
+ trans_.write(buf);
391
+ } catch (UnsupportedEncodingException uex) {
392
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
393
+ }
394
+ if (escapeNum) {
395
+ trans_.write(QUOTE);
396
+ }
397
+ }
398
+
399
+ // Write out a double as a JSON value. If it is NaN or infinity or if the
400
+ // context dictates escaping, write out as JSON string.
401
+ private void writeJSONDouble(double num) throws TException {
402
+ context_.write();
403
+ String str = Double.toString(num);
404
+ boolean special = false;
405
+ switch (str.charAt(0)) {
406
+ case 'N': // NaN
407
+ case 'I': // Infinity
408
+ special = true;
409
+ break;
410
+ case '-':
411
+ if (str.charAt(1) == 'I') { // -Infinity
412
+ special = true;
413
+ }
414
+ break;
415
+ }
416
+
417
+ boolean escapeNum = special || context_.escapeNum();
418
+ if (escapeNum) {
419
+ trans_.write(QUOTE);
420
+ }
421
+ try {
422
+ byte[] b = str.getBytes("UTF-8");
423
+ trans_.write(b, 0, b.length);
424
+ } catch (UnsupportedEncodingException uex) {
425
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
426
+ }
427
+ if (escapeNum) {
428
+ trans_.write(QUOTE);
429
+ }
430
+ }
431
+
432
+ // Write out contents of byte array b as a JSON string with base-64 encoded
433
+ // data
434
+ private void writeJSONBase64(byte[] b) throws TException {
435
+ context_.write();
436
+ trans_.write(QUOTE);
437
+ int len = b.length;
438
+ int off = 0;
439
+ while (len >= 3) {
440
+ // Encode 3 bytes at a time
441
+ TBase64Utils.encode(b, off, 3, tmpbuf_, 0);
442
+ trans_.write(tmpbuf_, 0, 4);
443
+ off += 3;
444
+ len -= 3;
445
+ }
446
+ if (len > 0) {
447
+ // Encode remainder
448
+ TBase64Utils.encode(b, off, len, tmpbuf_, 0);
449
+ trans_.write(tmpbuf_, 0, len + 1);
450
+ }
451
+ trans_.write(QUOTE);
452
+ }
453
+
454
+ private void writeJSONObjectStart() throws TException {
455
+ context_.write();
456
+ trans_.write(LBRACE);
457
+ pushContext(new JSONPairContext());
458
+ }
459
+
460
+ private void writeJSONObjectEnd() throws TException {
461
+ popContext();
462
+ trans_.write(RBRACE);
463
+ }
464
+
465
+ private void writeJSONArrayStart() throws TException {
466
+ context_.write();
467
+ trans_.write(LBRACKET);
468
+ pushContext(new JSONListContext());
469
+ }
470
+
471
+ private void writeJSONArrayEnd() throws TException {
472
+ popContext();
473
+ trans_.write(RBRACKET);
474
+ }
475
+
476
+ @Override
477
+ public void writeMessageBegin(TMessage message) throws TException {
478
+ writeJSONArrayStart();
479
+ writeJSONInteger(VERSION);
480
+ try {
481
+ byte[] b = message.name.getBytes("UTF-8");
482
+ writeJSONString(b);
483
+ } catch (UnsupportedEncodingException uex) {
484
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
485
+ }
486
+ writeJSONInteger(message.type);
487
+ writeJSONInteger(message.seqid);
488
+ }
489
+
490
+ @Override
491
+ public void writeMessageEnd() throws TException {
492
+ writeJSONArrayEnd();
493
+ }
494
+
495
+ @Override
496
+ public void writeStructBegin(TStruct struct) throws TException {
497
+ writeJSONObjectStart();
498
+ }
499
+
500
+ @Override
501
+ public void writeStructEnd() throws TException {
502
+ writeJSONObjectEnd();
503
+ }
504
+
505
+ @Override
506
+ public void writeFieldBegin(TField field) throws TException {
507
+ writeJSONInteger(field.id);
508
+ writeJSONObjectStart();
509
+ writeJSONString(getTypeNameForTypeID(field.type));
510
+ }
511
+
512
+ @Override
513
+ public void writeFieldEnd() throws TException {
514
+ writeJSONObjectEnd();
515
+ }
516
+
517
+ @Override
518
+ public void writeFieldStop() {}
519
+
520
+ @Override
521
+ public void writeMapBegin(TMap map) throws TException {
522
+ writeJSONArrayStart();
523
+ writeJSONString(getTypeNameForTypeID(map.keyType));
524
+ writeJSONString(getTypeNameForTypeID(map.valueType));
525
+ writeJSONInteger(map.size);
526
+ writeJSONObjectStart();
527
+ }
528
+
529
+ @Override
530
+ public void writeMapEnd() throws TException {
531
+ writeJSONObjectEnd();
532
+ writeJSONArrayEnd();
533
+ }
534
+
535
+ @Override
536
+ public void writeListBegin(TList list) throws TException {
537
+ writeJSONArrayStart();
538
+ writeJSONString(getTypeNameForTypeID(list.elemType));
539
+ writeJSONInteger(list.size);
540
+ }
541
+
542
+ @Override
543
+ public void writeListEnd() throws TException {
544
+ writeJSONArrayEnd();
545
+ }
546
+
547
+ @Override
548
+ public void writeSetBegin(TSet set) throws TException {
549
+ writeJSONArrayStart();
550
+ writeJSONString(getTypeNameForTypeID(set.elemType));
551
+ writeJSONInteger(set.size);
552
+ }
553
+
554
+ @Override
555
+ public void writeSetEnd() throws TException {
556
+ writeJSONArrayEnd();
557
+ }
558
+
559
+ @Override
560
+ public void writeBool(boolean b) throws TException {
561
+ writeJSONInteger(b ? (long)1 : (long)0);
562
+ }
563
+
564
+ @Override
565
+ public void writeByte(byte b) throws TException {
566
+ writeJSONInteger((long)b);
567
+ }
568
+
569
+ @Override
570
+ public void writeI16(short i16) throws TException {
571
+ writeJSONInteger((long)i16);
572
+ }
573
+
574
+ @Override
575
+ public void writeI32(int i32) throws TException {
576
+ writeJSONInteger((long)i32);
577
+ }
578
+
579
+ @Override
580
+ public void writeI64(long i64) throws TException {
581
+ writeJSONInteger(i64);
582
+ }
583
+
584
+ @Override
585
+ public void writeDouble(double dub) throws TException {
586
+ writeJSONDouble(dub);
587
+ }
588
+
589
+ @Override
590
+ public void writeString(String str) throws TException {
591
+ try {
592
+ byte[] b = str.getBytes("UTF-8");
593
+ writeJSONString(b);
594
+ } catch (UnsupportedEncodingException uex) {
595
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
596
+ }
597
+ }
598
+
599
+ @Override
600
+ public void writeBinary(byte[] bin) throws TException {
601
+ writeJSONBase64(bin);
602
+ }
603
+
604
+ /**
605
+ * Reading methods.
606
+ */
607
+
608
+ // Read in a JSON string, unescaping as appropriate.. Skip reading from the
609
+ // context if skipContext is true.
610
+ private TByteArrayOutputStream readJSONString(boolean skipContext)
611
+ throws TException {
612
+ TByteArrayOutputStream arr = new TByteArrayOutputStream(DEF_STRING_SIZE);
613
+ if (!skipContext) {
614
+ context_.read();
615
+ }
616
+ readJSONSyntaxChar(QUOTE);
617
+ while (true) {
618
+ byte ch = reader_.read();
619
+ if (ch == QUOTE[0]) {
620
+ break;
621
+ }
622
+ if (ch == ESCSEQ[0]) {
623
+ ch = reader_.read();
624
+ if (ch == ESCSEQ[1]) {
625
+ readJSONSyntaxChar(ZERO);
626
+ readJSONSyntaxChar(ZERO);
627
+ trans_.readAll(tmpbuf_, 0, 2);
628
+ ch = (byte)((hexVal((byte)tmpbuf_[0]) << 4) + hexVal(tmpbuf_[1]));
629
+ }
630
+ else {
631
+ int off = ESCAPE_CHARS.indexOf(ch);
632
+ if (off == -1) {
633
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
634
+ "Expected control char");
635
+ }
636
+ ch = ESCAPE_CHAR_VALS[off];
637
+ }
638
+ }
639
+ arr.write(ch);
640
+ }
641
+ return arr;
642
+ }
643
+
644
+ // Return true if the given byte could be a valid part of a JSON number.
645
+ private boolean isJSONNumeric(byte b) {
646
+ switch (b) {
647
+ case '+':
648
+ case '-':
649
+ case '.':
650
+ case '0':
651
+ case '1':
652
+ case '2':
653
+ case '3':
654
+ case '4':
655
+ case '5':
656
+ case '6':
657
+ case '7':
658
+ case '8':
659
+ case '9':
660
+ case 'E':
661
+ case 'e':
662
+ return true;
663
+ }
664
+ return false;
665
+ }
666
+
667
+ // Read in a sequence of characters that are all valid in JSON numbers. Does
668
+ // not do a complete regex check to validate that this is actually a number.
669
+ private String readJSONNumericChars() throws TException {
670
+ StringBuilder strbld = new StringBuilder();
671
+ while (true) {
672
+ byte ch = reader_.peek();
673
+ if (!isJSONNumeric(ch)) {
674
+ break;
675
+ }
676
+ strbld.append((char)reader_.read());
677
+ }
678
+ return strbld.toString();
679
+ }
680
+
681
+ // Read in a JSON number. If the context dictates, read in enclosing quotes.
682
+ private long readJSONInteger() throws TException {
683
+ context_.read();
684
+ if (context_.escapeNum()) {
685
+ readJSONSyntaxChar(QUOTE);
686
+ }
687
+ String str = readJSONNumericChars();
688
+ if (context_.escapeNum()) {
689
+ readJSONSyntaxChar(QUOTE);
690
+ }
691
+ try {
692
+ return Long.valueOf(str);
693
+ }
694
+ catch (NumberFormatException ex) {
695
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
696
+ "Bad data encounted in numeric data");
697
+ }
698
+ }
699
+
700
+ // Read in a JSON double value. Throw if the value is not wrapped in quotes
701
+ // when expected or if wrapped in quotes when not expected.
702
+ private double readJSONDouble() throws TException {
703
+ context_.read();
704
+ if (reader_.peek() == QUOTE[0]) {
705
+ TByteArrayOutputStream arr = readJSONString(true);
706
+ try {
707
+ double dub = Double.valueOf(arr.toString("UTF-8"));
708
+ if (!context_.escapeNum() && !Double.isNaN(dub) &&
709
+ !Double.isInfinite(dub)) {
710
+ // Throw exception -- we should not be in a string in this case
711
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
712
+ "Numeric data unexpectedly quoted");
713
+ }
714
+ return dub;
715
+ }
716
+ catch (UnsupportedEncodingException ex) {
717
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
718
+ }
719
+ }
720
+ else {
721
+ if (context_.escapeNum()) {
722
+ // This will throw - we should have had a quote if escapeNum == true
723
+ readJSONSyntaxChar(QUOTE);
724
+ }
725
+ try {
726
+ return Double.valueOf(readJSONNumericChars());
727
+ }
728
+ catch (NumberFormatException ex) {
729
+ throw new TProtocolException(TProtocolException.INVALID_DATA,
730
+ "Bad data encounted in numeric data");
731
+ }
732
+ }
733
+ }
734
+
735
+ // Read in a JSON string containing base-64 encoded data and decode it.
736
+ private byte[] readJSONBase64() throws TException {
737
+ TByteArrayOutputStream arr = readJSONString(false);
738
+ byte[] b = arr.get();
739
+ int len = arr.len();
740
+ int off = 0;
741
+ int size = 0;
742
+ while (len >= 4) {
743
+ // Decode 4 bytes at a time
744
+ TBase64Utils.decode(b, off, 4, b, size); // NB: decoded in place
745
+ off += 4;
746
+ len -= 4;
747
+ size += 3;
748
+ }
749
+ // Don't decode if we hit the end or got a single leftover byte (invalid
750
+ // base64 but legal for skip of regular string type)
751
+ if (len > 1) {
752
+ // Decode remainder
753
+ TBase64Utils.decode(b, off, len, b, size); // NB: decoded in place
754
+ size += len - 1;
755
+ }
756
+ // Sadly we must copy the byte[] (any way around this?)
757
+ byte [] result = new byte[size];
758
+ System.arraycopy(b, 0, result, 0, size);
759
+ return result;
760
+ }
761
+
762
+ private void readJSONObjectStart() throws TException {
763
+ context_.read();
764
+ readJSONSyntaxChar(LBRACE);
765
+ pushContext(new JSONPairContext());
766
+ }
767
+
768
+ private void readJSONObjectEnd() throws TException {
769
+ readJSONSyntaxChar(RBRACE);
770
+ popContext();
771
+ }
772
+
773
+ private void readJSONArrayStart() throws TException {
774
+ context_.read();
775
+ readJSONSyntaxChar(LBRACKET);
776
+ pushContext(new JSONListContext());
777
+ }
778
+
779
+ private void readJSONArrayEnd() throws TException {
780
+ readJSONSyntaxChar(RBRACKET);
781
+ popContext();
782
+ }
783
+
784
+ @Override
785
+ public TMessage readMessageBegin() throws TException {
786
+ readJSONArrayStart();
787
+ if (readJSONInteger() != VERSION) {
788
+ throw new TProtocolException(TProtocolException.BAD_VERSION,
789
+ "Message contained bad version.");
790
+ }
791
+ String name;
792
+ try {
793
+ name = readJSONString(false).toString("UTF-8");
794
+ }
795
+ catch (UnsupportedEncodingException ex) {
796
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
797
+ }
798
+ byte type = (byte) readJSONInteger();
799
+ int seqid = (int) readJSONInteger();
800
+ return new TMessage(name, type, seqid);
801
+ }
802
+
803
+ @Override
804
+ public void readMessageEnd() throws TException {
805
+ readJSONArrayEnd();
806
+ }
807
+
808
+ @Override
809
+ public TStruct readStructBegin() throws TException {
810
+ readJSONObjectStart();
811
+ return ANONYMOUS_STRUCT;
812
+ }
813
+
814
+ @Override
815
+ public void readStructEnd() throws TException {
816
+ readJSONObjectEnd();
817
+ }
818
+
819
+ @Override
820
+ public TField readFieldBegin() throws TException {
821
+ byte ch = reader_.peek();
822
+ byte type;
823
+ short id = 0;
824
+ if (ch == RBRACE[0]) {
825
+ type = TType.STOP;
826
+ }
827
+ else {
828
+ id = (short) readJSONInteger();
829
+ readJSONObjectStart();
830
+ type = getTypeIDForTypeName(readJSONString(false).get());
831
+ }
832
+ return new TField("", type, id);
833
+ }
834
+
835
+ @Override
836
+ public void readFieldEnd() throws TException {
837
+ readJSONObjectEnd();
838
+ }
839
+
840
+ @Override
841
+ public TMap readMapBegin() throws TException {
842
+ readJSONArrayStart();
843
+ byte keyType = getTypeIDForTypeName(readJSONString(false).get());
844
+ byte valueType = getTypeIDForTypeName(readJSONString(false).get());
845
+ int size = (int)readJSONInteger();
846
+ readJSONObjectStart();
847
+ return new TMap(keyType, valueType, size);
848
+ }
849
+
850
+ @Override
851
+ public void readMapEnd() throws TException {
852
+ readJSONObjectEnd();
853
+ readJSONArrayEnd();
854
+ }
855
+
856
+ @Override
857
+ public TList readListBegin() throws TException {
858
+ readJSONArrayStart();
859
+ byte elemType = getTypeIDForTypeName(readJSONString(false).get());
860
+ int size = (int)readJSONInteger();
861
+ return new TList(elemType, size);
862
+ }
863
+
864
+ @Override
865
+ public void readListEnd() throws TException {
866
+ readJSONArrayEnd();
867
+ }
868
+
869
+ @Override
870
+ public TSet readSetBegin() throws TException {
871
+ readJSONArrayStart();
872
+ byte elemType = getTypeIDForTypeName(readJSONString(false).get());
873
+ int size = (int)readJSONInteger();
874
+ return new TSet(elemType, size);
875
+ }
876
+
877
+ @Override
878
+ public void readSetEnd() throws TException {
879
+ readJSONArrayEnd();
880
+ }
881
+
882
+ @Override
883
+ public boolean readBool() throws TException {
884
+ return (readJSONInteger() == 0 ? false : true);
885
+ }
886
+
887
+ @Override
888
+ public byte readByte() throws TException {
889
+ return (byte) readJSONInteger();
890
+ }
891
+
892
+ @Override
893
+ public short readI16() throws TException {
894
+ return (short) readJSONInteger();
895
+ }
896
+
897
+ @Override
898
+ public int readI32() throws TException {
899
+ return (int) readJSONInteger();
900
+ }
901
+
902
+ @Override
903
+ public long readI64() throws TException {
904
+ return (long) readJSONInteger();
905
+ }
906
+
907
+ @Override
908
+ public double readDouble() throws TException {
909
+ return readJSONDouble();
910
+ }
911
+
912
+ @Override
913
+ public String readString() throws TException {
914
+ try {
915
+ return readJSONString(false).toString("UTF-8");
916
+ }
917
+ catch (UnsupportedEncodingException ex) {
918
+ throw new TException("JVM DOES NOT SUPPORT UTF-8");
919
+ }
920
+ }
921
+
922
+ @Override
923
+ public byte[] readBinary() throws TException {
924
+ return readJSONBase64();
925
+ }
926
+
927
+ }