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,667 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ #ifndef _THRIFT_TRANSPORT_TBUFFERTRANSPORTS_H_
21
+ #define _THRIFT_TRANSPORT_TBUFFERTRANSPORTS_H_ 1
22
+
23
+ #include <cstring>
24
+ #include "boost/scoped_array.hpp"
25
+
26
+ #include <transport/TTransport.h>
27
+
28
+ #ifdef __GNUC__
29
+ #define TDB_LIKELY(val) (__builtin_expect((val), 1))
30
+ #define TDB_UNLIKELY(val) (__builtin_expect((val), 0))
31
+ #else
32
+ #define TDB_LIKELY(val) (val)
33
+ #define TDB_UNLIKELY(val) (val)
34
+ #endif
35
+
36
+ namespace apache { namespace thrift { namespace transport {
37
+
38
+
39
+ /**
40
+ * Base class for all transports that use read/write buffers for performance.
41
+ *
42
+ * TBufferBase is designed to implement the fast-path "memcpy" style
43
+ * operations that work in the common case. It does so with small and
44
+ * (eventually) nonvirtual, inlinable methods. TBufferBase is an abstract
45
+ * class. Subclasses are expected to define the "slow path" operations
46
+ * that have to be done when the buffers are full or empty.
47
+ *
48
+ */
49
+ class TBufferBase : public TTransport {
50
+
51
+ public:
52
+
53
+ /**
54
+ * Fast-path read.
55
+ *
56
+ * When we have enough data buffered to fulfill the read, we can satisfy it
57
+ * with a single memcpy, then adjust our internal pointers. If the buffer
58
+ * is empty, we call out to our slow path, implemented by a subclass.
59
+ * This method is meant to eventually be nonvirtual and inlinable.
60
+ */
61
+ uint32_t read(uint8_t* buf, uint32_t len) {
62
+ uint8_t* new_rBase = rBase_ + len;
63
+ if (TDB_LIKELY(new_rBase <= rBound_)) {
64
+ std::memcpy(buf, rBase_, len);
65
+ rBase_ = new_rBase;
66
+ return len;
67
+ }
68
+ return readSlow(buf, len);
69
+ }
70
+
71
+ /**
72
+ * Fast-path write.
73
+ *
74
+ * When we have enough empty space in our buffer to accomodate the write, we
75
+ * can satisfy it with a single memcpy, then adjust our internal pointers.
76
+ * If the buffer is full, we call out to our slow path, implemented by a
77
+ * subclass. This method is meant to eventually be nonvirtual and
78
+ * inlinable.
79
+ */
80
+ void write(const uint8_t* buf, uint32_t len) {
81
+ uint8_t* new_wBase = wBase_ + len;
82
+ if (TDB_LIKELY(new_wBase <= wBound_)) {
83
+ std::memcpy(wBase_, buf, len);
84
+ wBase_ = new_wBase;
85
+ return;
86
+ }
87
+ writeSlow(buf, len);
88
+ }
89
+
90
+ /**
91
+ * Fast-path borrow. A lot like the fast-path read.
92
+ */
93
+ const uint8_t* borrow(uint8_t* buf, uint32_t* len) {
94
+ if (TDB_LIKELY(static_cast<ptrdiff_t>(*len) <= rBound_ - rBase_)) {
95
+ // With strict aliasing, writing to len shouldn't force us to
96
+ // refetch rBase_ from memory. TODO(dreiss): Verify this.
97
+ *len = rBound_ - rBase_;
98
+ return rBase_;
99
+ }
100
+ return borrowSlow(buf, len);
101
+ }
102
+
103
+ /**
104
+ * Consume doesn't require a slow path.
105
+ */
106
+ void consume(uint32_t len) {
107
+ if (TDB_LIKELY(static_cast<ptrdiff_t>(len) <= rBound_ - rBase_)) {
108
+ rBase_ += len;
109
+ } else {
110
+ throw TTransportException(TTransportException::BAD_ARGS,
111
+ "consume did not follow a borrow.");
112
+ }
113
+ }
114
+
115
+
116
+ protected:
117
+
118
+ /// Slow path read.
119
+ virtual uint32_t readSlow(uint8_t* buf, uint32_t len) = 0;
120
+
121
+ /// Slow path write.
122
+ virtual void writeSlow(const uint8_t* buf, uint32_t len) = 0;
123
+
124
+ /**
125
+ * Slow path borrow.
126
+ *
127
+ * POSTCONDITION: return == NULL || rBound_ - rBase_ >= *len
128
+ */
129
+ virtual const uint8_t* borrowSlow(uint8_t* buf, uint32_t* len) = 0;
130
+
131
+ /**
132
+ * Trivial constructor.
133
+ *
134
+ * Initialize pointers safely. Constructing is not a very
135
+ * performance-sensitive operation, so it is okay to just leave it to
136
+ * the concrete class to set up pointers correctly.
137
+ */
138
+ TBufferBase()
139
+ : rBase_(NULL)
140
+ , rBound_(NULL)
141
+ , wBase_(NULL)
142
+ , wBound_(NULL)
143
+ {}
144
+
145
+ /// Convenience mutator for setting the read buffer.
146
+ void setReadBuffer(uint8_t* buf, uint32_t len) {
147
+ rBase_ = buf;
148
+ rBound_ = buf+len;
149
+ }
150
+
151
+ /// Convenience mutator for setting the write buffer.
152
+ void setWriteBuffer(uint8_t* buf, uint32_t len) {
153
+ wBase_ = buf;
154
+ wBound_ = buf+len;
155
+ }
156
+
157
+ virtual ~TBufferBase() {}
158
+
159
+ /// Reads begin here.
160
+ uint8_t* rBase_;
161
+ /// Reads may extend to just before here.
162
+ uint8_t* rBound_;
163
+
164
+ /// Writes begin here.
165
+ uint8_t* wBase_;
166
+ /// Writes may extend to just before here.
167
+ uint8_t* wBound_;
168
+ };
169
+
170
+
171
+ /**
172
+ * Base class for all transport which wraps transport to new one.
173
+ */
174
+ class TUnderlyingTransport : public TBufferBase {
175
+ public:
176
+ static const int DEFAULT_BUFFER_SIZE = 512;
177
+
178
+ virtual bool peek() {
179
+ return (rBase_ < rBound_) || transport_->peek();
180
+ }
181
+
182
+ void open() {
183
+ transport_->open();
184
+ }
185
+
186
+ bool isOpen() {
187
+ return transport_->isOpen();
188
+ }
189
+
190
+ void close() {
191
+ flush();
192
+ transport_->close();
193
+ }
194
+
195
+ boost::shared_ptr<TTransport> getUnderlyingTransport() {
196
+ return transport_;
197
+ }
198
+
199
+ protected:
200
+ boost::shared_ptr<TTransport> transport_;
201
+
202
+ uint32_t rBufSize_;
203
+ uint32_t wBufSize_;
204
+ boost::scoped_array<uint8_t> rBuf_;
205
+ boost::scoped_array<uint8_t> wBuf_;
206
+
207
+ TUnderlyingTransport(boost::shared_ptr<TTransport> transport, uint32_t sz)
208
+ : transport_(transport)
209
+ , rBufSize_(sz)
210
+ , wBufSize_(sz)
211
+ , rBuf_(new uint8_t[rBufSize_])
212
+ , wBuf_(new uint8_t[wBufSize_]) {}
213
+
214
+ TUnderlyingTransport(boost::shared_ptr<TTransport> transport)
215
+ : transport_(transport)
216
+ , rBufSize_(DEFAULT_BUFFER_SIZE)
217
+ , wBufSize_(DEFAULT_BUFFER_SIZE)
218
+ , rBuf_(new uint8_t[rBufSize_])
219
+ , wBuf_(new uint8_t[wBufSize_]) {}
220
+
221
+ TUnderlyingTransport(boost::shared_ptr<TTransport> transport, uint32_t rsz, uint32_t wsz)
222
+ : transport_(transport)
223
+ , rBufSize_(rsz)
224
+ , wBufSize_(wsz)
225
+ , rBuf_(new uint8_t[rBufSize_])
226
+ , wBuf_(new uint8_t[wBufSize_]) {}
227
+ };
228
+
229
+ /**
230
+ * Buffered transport. For reads it will read more data than is requested
231
+ * and will serve future data out of a local buffer. For writes, data is
232
+ * stored to an in memory buffer before being written out.
233
+ *
234
+ */
235
+ class TBufferedTransport : public TUnderlyingTransport {
236
+ public:
237
+
238
+ /// Use default buffer sizes.
239
+ TBufferedTransport(boost::shared_ptr<TTransport> transport)
240
+ : TUnderlyingTransport(transport)
241
+ {
242
+ initPointers();
243
+ }
244
+
245
+ /// Use specified buffer sizes.
246
+ TBufferedTransport(boost::shared_ptr<TTransport> transport, uint32_t sz)
247
+ : TUnderlyingTransport(transport, sz)
248
+ {
249
+ initPointers();
250
+ }
251
+
252
+ /// Use specified read and write buffer sizes.
253
+ TBufferedTransport(boost::shared_ptr<TTransport> transport, uint32_t rsz, uint32_t wsz)
254
+ : TUnderlyingTransport(transport, rsz, wsz)
255
+ {
256
+ initPointers();
257
+ }
258
+
259
+ virtual bool peek() {
260
+ /* shigin: see THRIFT-96 discussion */
261
+ if (rBase_ == rBound_) {
262
+ setReadBuffer(rBuf_.get(), transport_->read(rBuf_.get(), rBufSize_));
263
+ }
264
+ return (rBound_ > rBase_);
265
+ }
266
+ virtual uint32_t readSlow(uint8_t* buf, uint32_t len);
267
+
268
+ virtual void writeSlow(const uint8_t* buf, uint32_t len);
269
+
270
+ void flush();
271
+
272
+
273
+ /**
274
+ * The following behavior is currently implemented by TBufferedTransport,
275
+ * but that may change in a future version:
276
+ * 1/ If len is at most rBufSize_, borrow will never return NULL.
277
+ * Depending on the underlying transport, it could throw an exception
278
+ * or hang forever.
279
+ * 2/ Some borrow requests may copy bytes internally. However,
280
+ * if len is at most rBufSize_/2, none of the copied bytes
281
+ * will ever have to be copied again. For optimial performance,
282
+ * stay under this limit.
283
+ */
284
+ virtual const uint8_t* borrowSlow(uint8_t* buf, uint32_t* len);
285
+
286
+ protected:
287
+ void initPointers() {
288
+ setReadBuffer(rBuf_.get(), 0);
289
+ setWriteBuffer(wBuf_.get(), wBufSize_);
290
+ // Write size never changes.
291
+ }
292
+ };
293
+
294
+
295
+ /**
296
+ * Wraps a transport into a buffered one.
297
+ *
298
+ */
299
+ class TBufferedTransportFactory : public TTransportFactory {
300
+ public:
301
+ TBufferedTransportFactory() {}
302
+
303
+ virtual ~TBufferedTransportFactory() {}
304
+
305
+ /**
306
+ * Wraps the transport into a buffered one.
307
+ */
308
+ virtual boost::shared_ptr<TTransport> getTransport(boost::shared_ptr<TTransport> trans) {
309
+ return boost::shared_ptr<TTransport>(new TBufferedTransport(trans));
310
+ }
311
+
312
+ };
313
+
314
+
315
+ /**
316
+ * Framed transport. All writes go into an in-memory buffer until flush is
317
+ * called, at which point the transport writes the length of the entire
318
+ * binary chunk followed by the data payload. This allows the receiver on the
319
+ * other end to always do fixed-length reads.
320
+ *
321
+ */
322
+ class TFramedTransport : public TUnderlyingTransport {
323
+ public:
324
+
325
+ /// Use default buffer sizes.
326
+ TFramedTransport(boost::shared_ptr<TTransport> transport)
327
+ : TUnderlyingTransport(transport)
328
+ {
329
+ initPointers();
330
+ }
331
+
332
+ TFramedTransport(boost::shared_ptr<TTransport> transport, uint32_t sz)
333
+ : TUnderlyingTransport(transport, sz)
334
+ {
335
+ initPointers();
336
+ }
337
+
338
+ virtual uint32_t readSlow(uint8_t* buf, uint32_t len);
339
+
340
+ virtual void writeSlow(const uint8_t* buf, uint32_t len);
341
+
342
+ virtual void flush();
343
+
344
+ const uint8_t* borrowSlow(uint8_t* buf, uint32_t* len);
345
+
346
+ protected:
347
+ /**
348
+ * Reads a frame of input from the underlying stream.
349
+ */
350
+ void readFrame();
351
+
352
+ void initPointers() {
353
+ setReadBuffer(NULL, 0);
354
+ setWriteBuffer(wBuf_.get(), wBufSize_);
355
+
356
+ // Pad the buffer so we can insert the size later.
357
+ int32_t pad = 0;
358
+ this->write((uint8_t*)&pad, sizeof(pad));
359
+ }
360
+ };
361
+
362
+ /**
363
+ * Wraps a transport into a framed one.
364
+ *
365
+ */
366
+ class TFramedTransportFactory : public TTransportFactory {
367
+ public:
368
+ TFramedTransportFactory() {}
369
+
370
+ virtual ~TFramedTransportFactory() {}
371
+
372
+ /**
373
+ * Wraps the transport into a framed one.
374
+ */
375
+ virtual boost::shared_ptr<TTransport> getTransport(boost::shared_ptr<TTransport> trans) {
376
+ return boost::shared_ptr<TTransport>(new TFramedTransport(trans));
377
+ }
378
+
379
+ };
380
+
381
+
382
+ /**
383
+ * A memory buffer is a tranpsort that simply reads from and writes to an
384
+ * in memory buffer. Anytime you call write on it, the data is simply placed
385
+ * into a buffer, and anytime you call read, data is read from that buffer.
386
+ *
387
+ * The buffers are allocated using C constructs malloc,realloc, and the size
388
+ * doubles as necessary. We've considered using scoped
389
+ *
390
+ */
391
+ class TMemoryBuffer : public TBufferBase {
392
+ private:
393
+
394
+ // Common initialization done by all constructors.
395
+ void initCommon(uint8_t* buf, uint32_t size, bool owner, uint32_t wPos) {
396
+ if (buf == NULL && size != 0) {
397
+ assert(owner);
398
+ buf = (uint8_t*)std::malloc(size);
399
+ if (buf == NULL) {
400
+ throw TTransportException("Out of memory");
401
+ }
402
+ }
403
+
404
+ buffer_ = buf;
405
+ bufferSize_ = size;
406
+
407
+ rBase_ = buffer_;
408
+ rBound_ = buffer_ + wPos;
409
+ // TODO(dreiss): Investigate NULL-ing this if !owner.
410
+ wBase_ = buffer_ + wPos;
411
+ wBound_ = buffer_ + bufferSize_;
412
+
413
+ owner_ = owner;
414
+
415
+ // rBound_ is really an artifact. In principle, it should always be
416
+ // equal to wBase_. We update it in a few places (computeRead, etc.).
417
+ }
418
+
419
+ public:
420
+ static const uint32_t defaultSize = 1024;
421
+
422
+ /**
423
+ * This enum specifies how a TMemoryBuffer should treat
424
+ * memory passed to it via constructors or resetBuffer.
425
+ *
426
+ * OBSERVE:
427
+ * TMemoryBuffer will simply store a pointer to the memory.
428
+ * It is the callers responsibility to ensure that the pointer
429
+ * remains valid for the lifetime of the TMemoryBuffer,
430
+ * and that it is properly cleaned up.
431
+ * Note that no data can be written to observed buffers.
432
+ *
433
+ * COPY:
434
+ * TMemoryBuffer will make an internal copy of the buffer.
435
+ * The caller has no responsibilities.
436
+ *
437
+ * TAKE_OWNERSHIP:
438
+ * TMemoryBuffer will become the "owner" of the buffer,
439
+ * and will be responsible for freeing it.
440
+ * The membory must have been allocated with malloc.
441
+ */
442
+ enum MemoryPolicy
443
+ { OBSERVE = 1
444
+ , COPY = 2
445
+ , TAKE_OWNERSHIP = 3
446
+ };
447
+
448
+ /**
449
+ * Construct a TMemoryBuffer with a default-sized buffer,
450
+ * owned by the TMemoryBuffer object.
451
+ */
452
+ TMemoryBuffer() {
453
+ initCommon(NULL, defaultSize, true, 0);
454
+ }
455
+
456
+ /**
457
+ * Construct a TMemoryBuffer with a buffer of a specified size,
458
+ * owned by the TMemoryBuffer object.
459
+ *
460
+ * @param sz The initial size of the buffer.
461
+ */
462
+ TMemoryBuffer(uint32_t sz) {
463
+ initCommon(NULL, sz, true, 0);
464
+ }
465
+
466
+ /**
467
+ * Construct a TMemoryBuffer with buf as its initial contents.
468
+ *
469
+ * @param buf The initial contents of the buffer.
470
+ * Note that, while buf is a non-const pointer,
471
+ * TMemoryBuffer will not write to it if policy == OBSERVE,
472
+ * so it is safe to const_cast<uint8_t*>(whatever).
473
+ * @param sz The size of @c buf.
474
+ * @param policy See @link MemoryPolicy @endlink .
475
+ */
476
+ TMemoryBuffer(uint8_t* buf, uint32_t sz, MemoryPolicy policy = OBSERVE) {
477
+ if (buf == NULL && sz != 0) {
478
+ throw TTransportException(TTransportException::BAD_ARGS,
479
+ "TMemoryBuffer given null buffer with non-zero size.");
480
+ }
481
+
482
+ switch (policy) {
483
+ case OBSERVE:
484
+ case TAKE_OWNERSHIP:
485
+ initCommon(buf, sz, policy == TAKE_OWNERSHIP, sz);
486
+ break;
487
+ case COPY:
488
+ initCommon(NULL, sz, true, 0);
489
+ this->write(buf, sz);
490
+ break;
491
+ default:
492
+ throw TTransportException(TTransportException::BAD_ARGS,
493
+ "Invalid MemoryPolicy for TMemoryBuffer");
494
+ }
495
+ }
496
+
497
+ ~TMemoryBuffer() {
498
+ if (owner_) {
499
+ std::free(buffer_);
500
+ }
501
+ }
502
+
503
+ bool isOpen() {
504
+ return true;
505
+ }
506
+
507
+ bool peek() {
508
+ return (rBase_ < wBase_);
509
+ }
510
+
511
+ void open() {}
512
+
513
+ void close() {}
514
+
515
+ // TODO(dreiss): Make bufPtr const.
516
+ void getBuffer(uint8_t** bufPtr, uint32_t* sz) {
517
+ *bufPtr = rBase_;
518
+ *sz = wBase_ - rBase_;
519
+ }
520
+
521
+ std::string getBufferAsString() {
522
+ if (buffer_ == NULL) {
523
+ return "";
524
+ }
525
+ uint8_t* buf;
526
+ uint32_t sz;
527
+ getBuffer(&buf, &sz);
528
+ return std::string((char*)buf, (std::string::size_type)sz);
529
+ }
530
+
531
+ void appendBufferToString(std::string& str) {
532
+ if (buffer_ == NULL) {
533
+ return;
534
+ }
535
+ uint8_t* buf;
536
+ uint32_t sz;
537
+ getBuffer(&buf, &sz);
538
+ str.append((char*)buf, sz);
539
+ }
540
+
541
+ void resetBuffer(bool reset_capacity = false) {
542
+ if (reset_capacity)
543
+ {
544
+ assert(owner_);
545
+
546
+ void* new_buffer = std::realloc(buffer_, defaultSize);
547
+
548
+ if (new_buffer == NULL) {
549
+ throw TTransportException("Out of memory.");
550
+ }
551
+
552
+ buffer_ = (uint8_t*) new_buffer;
553
+ bufferSize_ = defaultSize;
554
+
555
+ wBound_ = buffer_ + bufferSize_;
556
+ }
557
+
558
+ rBase_ = buffer_;
559
+ rBound_ = buffer_;
560
+ wBase_ = buffer_;
561
+ // It isn't safe to write into a buffer we don't own.
562
+ if (!owner_) {
563
+ wBound_ = wBase_;
564
+ bufferSize_ = 0;
565
+ }
566
+ }
567
+
568
+ /// See constructor documentation.
569
+ void resetBuffer(uint8_t* buf, uint32_t sz, MemoryPolicy policy = OBSERVE) {
570
+ // Use a variant of the copy-and-swap trick for assignment operators.
571
+ // This is sub-optimal in terms of performance for two reasons:
572
+ // 1/ The constructing and swapping of the (small) values
573
+ // in the temporary object takes some time, and is not necessary.
574
+ // 2/ If policy == COPY, we allocate the new buffer before
575
+ // freeing the old one, precluding the possibility of
576
+ // reusing that memory.
577
+ // I doubt that either of these problems could be optimized away,
578
+ // but the second is probably no a common case, and the first is minor.
579
+ // I don't expect resetBuffer to be a common operation, so I'm willing to
580
+ // bite the performance bullet to make the method this simple.
581
+
582
+ // Construct the new buffer.
583
+ TMemoryBuffer new_buffer(buf, sz, policy);
584
+ // Move it into ourself.
585
+ this->swap(new_buffer);
586
+ // Our old self gets destroyed.
587
+ }
588
+
589
+ std::string readAsString(uint32_t len) {
590
+ std::string str;
591
+ (void)readAppendToString(str, len);
592
+ return str;
593
+ }
594
+
595
+ uint32_t readAppendToString(std::string& str, uint32_t len);
596
+
597
+ void readEnd() {
598
+ if (rBase_ == wBase_) {
599
+ resetBuffer();
600
+ }
601
+ }
602
+
603
+ uint32_t available_read() const {
604
+ // Remember, wBase_ is the real rBound_.
605
+ return wBase_ - rBase_;
606
+ }
607
+
608
+ uint32_t available_write() const {
609
+ return wBound_ - wBase_;
610
+ }
611
+
612
+ // Returns a pointer to where the client can write data to append to
613
+ // the TMemoryBuffer, and ensures the buffer is big enough to accomodate a
614
+ // write of the provided length. The returned pointer is very convenient for
615
+ // passing to read(), recv(), or similar. You must call wroteBytes() as soon
616
+ // as data is written or the buffer will not be aware that data has changed.
617
+ uint8_t* getWritePtr(uint32_t len) {
618
+ ensureCanWrite(len);
619
+ return wBase_;
620
+ }
621
+
622
+ // Informs the buffer that the client has written 'len' bytes into storage
623
+ // that had been provided by getWritePtr().
624
+ void wroteBytes(uint32_t len);
625
+
626
+ protected:
627
+ void swap(TMemoryBuffer& that) {
628
+ using std::swap;
629
+ swap(buffer_, that.buffer_);
630
+ swap(bufferSize_, that.bufferSize_);
631
+
632
+ swap(rBase_, that.rBase_);
633
+ swap(rBound_, that.rBound_);
634
+ swap(wBase_, that.wBase_);
635
+ swap(wBound_, that.wBound_);
636
+
637
+ swap(owner_, that.owner_);
638
+ }
639
+
640
+ // Make sure there's at least 'len' bytes available for writing.
641
+ void ensureCanWrite(uint32_t len);
642
+
643
+ // Compute the position and available data for reading.
644
+ void computeRead(uint32_t len, uint8_t** out_start, uint32_t* out_give);
645
+
646
+ uint32_t readSlow(uint8_t* buf, uint32_t len);
647
+
648
+ void writeSlow(const uint8_t* buf, uint32_t len);
649
+
650
+ const uint8_t* borrowSlow(uint8_t* buf, uint32_t* len);
651
+
652
+ // Data buffer
653
+ uint8_t* buffer_;
654
+
655
+ // Allocated buffer size
656
+ uint32_t bufferSize_;
657
+
658
+ // Is this object the owner of the buffer?
659
+ bool owner_;
660
+
661
+ // Don't forget to update constrctors, initCommon, and swap if
662
+ // you add new members.
663
+ };
664
+
665
+ }}} // apache::thrift::transport
666
+
667
+ #endif // #ifndef _THRIFT_TRANSPORT_TBUFFERTRANSPORTS_H_