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,442 @@
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_TFILETRANSPORT_H_
21
+ #define _THRIFT_TRANSPORT_TFILETRANSPORT_H_ 1
22
+
23
+ #include "TTransport.h"
24
+ #include "Thrift.h"
25
+ #include "TProcessor.h"
26
+
27
+ #include <string>
28
+ #include <stdio.h>
29
+
30
+ #include <pthread.h>
31
+
32
+ #include <boost/shared_ptr.hpp>
33
+
34
+ namespace apache { namespace thrift { namespace transport {
35
+
36
+ using apache::thrift::TProcessor;
37
+ using apache::thrift::protocol::TProtocolFactory;
38
+
39
+ // Data pertaining to a single event
40
+ typedef struct eventInfo {
41
+ uint8_t* eventBuff_;
42
+ uint32_t eventSize_;
43
+ uint32_t eventBuffPos_;
44
+
45
+ eventInfo():eventBuff_(NULL), eventSize_(0), eventBuffPos_(0){};
46
+ ~eventInfo() {
47
+ if (eventBuff_) {
48
+ delete[] eventBuff_;
49
+ }
50
+ }
51
+ } eventInfo;
52
+
53
+ // information about current read state
54
+ typedef struct readState {
55
+ eventInfo* event_;
56
+
57
+ // keep track of event size
58
+ uint8_t eventSizeBuff_[4];
59
+ uint8_t eventSizeBuffPos_;
60
+ bool readingSize_;
61
+
62
+ // read buffer variables
63
+ int32_t bufferPtr_;
64
+ int32_t bufferLen_;
65
+
66
+ // last successful dispatch point
67
+ int32_t lastDispatchPtr_;
68
+
69
+ void resetState(uint32_t lastDispatchPtr) {
70
+ readingSize_ = true;
71
+ eventSizeBuffPos_ = 0;
72
+ lastDispatchPtr_ = lastDispatchPtr;
73
+ }
74
+
75
+ void resetAllValues() {
76
+ resetState(0);
77
+ bufferPtr_ = 0;
78
+ bufferLen_ = 0;
79
+ if (event_) {
80
+ delete(event_);
81
+ }
82
+ event_ = 0;
83
+ }
84
+
85
+ readState() {
86
+ event_ = 0;
87
+ resetAllValues();
88
+ }
89
+
90
+ ~readState() {
91
+ if (event_) {
92
+ delete(event_);
93
+ }
94
+ }
95
+
96
+ } readState;
97
+
98
+ /**
99
+ * TFileTransportBuffer - buffer class used by TFileTransport for queueing up events
100
+ * to be written to disk. Should be used in the following way:
101
+ * 1) Buffer created
102
+ * 2) Buffer written to (addEvent)
103
+ * 3) Buffer read from (getNext)
104
+ * 4) Buffer reset (reset)
105
+ * 5) Go back to 2, or destroy buffer
106
+ *
107
+ * The buffer should never be written to after it is read from, unless it is reset first.
108
+ * Note: The above rules are enforced mainly for debugging its sole client TFileTransport
109
+ * which uses the buffer in this way.
110
+ *
111
+ */
112
+ class TFileTransportBuffer {
113
+ public:
114
+ TFileTransportBuffer(uint32_t size);
115
+ ~TFileTransportBuffer();
116
+
117
+ bool addEvent(eventInfo *event);
118
+ eventInfo* getNext();
119
+ void reset();
120
+ bool isFull();
121
+ bool isEmpty();
122
+
123
+ private:
124
+ TFileTransportBuffer(); // should not be used
125
+
126
+ enum mode {
127
+ WRITE,
128
+ READ
129
+ };
130
+ mode bufferMode_;
131
+
132
+ uint32_t writePoint_;
133
+ uint32_t readPoint_;
134
+ uint32_t size_;
135
+ eventInfo** buffer_;
136
+ };
137
+
138
+ /**
139
+ * Abstract interface for transports used to read files
140
+ */
141
+ class TFileReaderTransport : virtual public TTransport {
142
+ public:
143
+ virtual int32_t getReadTimeout() = 0;
144
+ virtual void setReadTimeout(int32_t readTimeout) = 0;
145
+
146
+ virtual uint32_t getNumChunks() = 0;
147
+ virtual uint32_t getCurChunk() = 0;
148
+ virtual void seekToChunk(int32_t chunk) = 0;
149
+ virtual void seekToEnd() = 0;
150
+ };
151
+
152
+ /**
153
+ * Abstract interface for transports used to write files
154
+ */
155
+ class TFileWriterTransport : virtual public TTransport {
156
+ public:
157
+ virtual uint32_t getChunkSize() = 0;
158
+ virtual void setChunkSize(uint32_t chunkSize) = 0;
159
+ };
160
+
161
+ /**
162
+ * File implementation of a transport. Reads and writes are done to a
163
+ * file on disk.
164
+ *
165
+ */
166
+ class TFileTransport : public TFileReaderTransport,
167
+ public TFileWriterTransport {
168
+ public:
169
+ TFileTransport(std::string path, bool readOnly=false);
170
+ ~TFileTransport();
171
+
172
+ // TODO: what is the correct behaviour for this?
173
+ // the log file is generally always open
174
+ bool isOpen() {
175
+ return true;
176
+ }
177
+
178
+ void write(const uint8_t* buf, uint32_t len);
179
+ void flush();
180
+
181
+ uint32_t readAll(uint8_t* buf, uint32_t len);
182
+ uint32_t read(uint8_t* buf, uint32_t len);
183
+
184
+ // log-file specific functions
185
+ void seekToChunk(int32_t chunk);
186
+ void seekToEnd();
187
+ uint32_t getNumChunks();
188
+ uint32_t getCurChunk();
189
+
190
+ // for changing the output file
191
+ void resetOutputFile(int fd, std::string filename, int64_t offset);
192
+
193
+ // Setter/Getter functions for user-controllable options
194
+ void setReadBuffSize(uint32_t readBuffSize) {
195
+ if (readBuffSize) {
196
+ readBuffSize_ = readBuffSize;
197
+ }
198
+ }
199
+ uint32_t getReadBuffSize() {
200
+ return readBuffSize_;
201
+ }
202
+
203
+ static const int32_t TAIL_READ_TIMEOUT = -1;
204
+ static const int32_t NO_TAIL_READ_TIMEOUT = 0;
205
+ void setReadTimeout(int32_t readTimeout) {
206
+ readTimeout_ = readTimeout;
207
+ }
208
+ int32_t getReadTimeout() {
209
+ return readTimeout_;
210
+ }
211
+
212
+ void setChunkSize(uint32_t chunkSize) {
213
+ if (chunkSize) {
214
+ chunkSize_ = chunkSize;
215
+ }
216
+ }
217
+ uint32_t getChunkSize() {
218
+ return chunkSize_;
219
+ }
220
+
221
+ void setEventBufferSize(uint32_t bufferSize) {
222
+ if (bufferAndThreadInitialized_) {
223
+ GlobalOutput("Cannot change the buffer size after writer thread started");
224
+ return;
225
+ }
226
+ eventBufferSize_ = bufferSize;
227
+ }
228
+
229
+ uint32_t getEventBufferSize() {
230
+ return eventBufferSize_;
231
+ }
232
+
233
+ void setFlushMaxUs(uint32_t flushMaxUs) {
234
+ if (flushMaxUs) {
235
+ flushMaxUs_ = flushMaxUs;
236
+ }
237
+ }
238
+ uint32_t getFlushMaxUs() {
239
+ return flushMaxUs_;
240
+ }
241
+
242
+ void setFlushMaxBytes(uint32_t flushMaxBytes) {
243
+ if (flushMaxBytes) {
244
+ flushMaxBytes_ = flushMaxBytes;
245
+ }
246
+ }
247
+ uint32_t getFlushMaxBytes() {
248
+ return flushMaxBytes_;
249
+ }
250
+
251
+ void setMaxEventSize(uint32_t maxEventSize) {
252
+ maxEventSize_ = maxEventSize;
253
+ }
254
+ uint32_t getMaxEventSize() {
255
+ return maxEventSize_;
256
+ }
257
+
258
+ void setMaxCorruptedEvents(uint32_t maxCorruptedEvents) {
259
+ maxCorruptedEvents_ = maxCorruptedEvents;
260
+ }
261
+ uint32_t getMaxCorruptedEvents() {
262
+ return maxCorruptedEvents_;
263
+ }
264
+
265
+ void setEofSleepTimeUs(uint32_t eofSleepTime) {
266
+ if (eofSleepTime) {
267
+ eofSleepTime_ = eofSleepTime;
268
+ }
269
+ }
270
+ uint32_t getEofSleepTimeUs() {
271
+ return eofSleepTime_;
272
+ }
273
+
274
+ private:
275
+ // helper functions for writing to a file
276
+ void enqueueEvent(const uint8_t* buf, uint32_t eventLen, bool blockUntilFlush);
277
+ bool swapEventBuffers(struct timespec* deadline);
278
+ bool initBufferAndWriteThread();
279
+
280
+ // control for writer thread
281
+ static void* startWriterThread(void* ptr) {
282
+ (((TFileTransport*)ptr)->writerThread());
283
+ return 0;
284
+ }
285
+ void writerThread();
286
+
287
+ // helper functions for reading from a file
288
+ eventInfo* readEvent();
289
+
290
+ // event corruption-related functions
291
+ bool isEventCorrupted();
292
+ void performRecovery();
293
+
294
+ // Utility functions
295
+ void openLogFile();
296
+ void getNextFlushTime(struct timespec* ts_next_flush);
297
+
298
+ // Class variables
299
+ readState readState_;
300
+ uint8_t* readBuff_;
301
+ eventInfo* currentEvent_;
302
+
303
+ uint32_t readBuffSize_;
304
+ static const uint32_t DEFAULT_READ_BUFF_SIZE = 1 * 1024 * 1024;
305
+
306
+ int32_t readTimeout_;
307
+ static const int32_t DEFAULT_READ_TIMEOUT_MS = 200;
308
+
309
+ // size of chunks that file will be split up into
310
+ uint32_t chunkSize_;
311
+ static const uint32_t DEFAULT_CHUNK_SIZE = 16 * 1024 * 1024;
312
+
313
+ // size of event buffers
314
+ uint32_t eventBufferSize_;
315
+ static const uint32_t DEFAULT_EVENT_BUFFER_SIZE = 10000;
316
+
317
+ // max number of microseconds that can pass without flushing
318
+ uint32_t flushMaxUs_;
319
+ static const uint32_t DEFAULT_FLUSH_MAX_US = 3000000;
320
+
321
+ // max number of bytes that can be written without flushing
322
+ uint32_t flushMaxBytes_;
323
+ static const uint32_t DEFAULT_FLUSH_MAX_BYTES = 1000 * 1024;
324
+
325
+ // max event size
326
+ uint32_t maxEventSize_;
327
+ static const uint32_t DEFAULT_MAX_EVENT_SIZE = 0;
328
+
329
+ // max number of corrupted events per chunk
330
+ uint32_t maxCorruptedEvents_;
331
+ static const uint32_t DEFAULT_MAX_CORRUPTED_EVENTS = 0;
332
+
333
+ // sleep duration when EOF is hit
334
+ uint32_t eofSleepTime_;
335
+ static const uint32_t DEFAULT_EOF_SLEEP_TIME_US = 500 * 1000;
336
+
337
+ // sleep duration when a corrupted event is encountered
338
+ uint32_t corruptedEventSleepTime_;
339
+ static const uint32_t DEFAULT_CORRUPTED_SLEEP_TIME_US = 1 * 1000 * 1000;
340
+
341
+ // writer thread id
342
+ pthread_t writerThreadId_;
343
+
344
+ // buffers to hold data before it is flushed. Each element of the buffer stores a msg that
345
+ // needs to be written to the file. The buffers are swapped by the writer thread.
346
+ TFileTransportBuffer *dequeueBuffer_;
347
+ TFileTransportBuffer *enqueueBuffer_;
348
+
349
+ // conditions used to block when the buffer is full or empty
350
+ pthread_cond_t notFull_, notEmpty_;
351
+ volatile bool closing_;
352
+
353
+ // To keep track of whether the buffer has been flushed
354
+ pthread_cond_t flushed_;
355
+ volatile bool forceFlush_;
356
+
357
+ // Mutex that is grabbed when enqueueing and swapping the read/write buffers
358
+ pthread_mutex_t mutex_;
359
+
360
+ // File information
361
+ std::string filename_;
362
+ int fd_;
363
+
364
+ // Whether the writer thread and buffers have been initialized
365
+ bool bufferAndThreadInitialized_;
366
+
367
+ // Offset within the file
368
+ off_t offset_;
369
+
370
+ // event corruption information
371
+ uint32_t lastBadChunk_;
372
+ uint32_t numCorruptedEventsInChunk_;
373
+
374
+ bool readOnly_;
375
+ };
376
+
377
+ // Exception thrown when EOF is hit
378
+ class TEOFException : public TTransportException {
379
+ public:
380
+ TEOFException():
381
+ TTransportException(TTransportException::END_OF_FILE) {};
382
+ };
383
+
384
+
385
+ // wrapper class to process events from a file containing thrift events
386
+ class TFileProcessor {
387
+ public:
388
+ /**
389
+ * Constructor that defaults output transport to null transport
390
+ *
391
+ * @param processor processes log-file events
392
+ * @param protocolFactory protocol factory
393
+ * @param inputTransport file transport
394
+ */
395
+ TFileProcessor(boost::shared_ptr<TProcessor> processor,
396
+ boost::shared_ptr<TProtocolFactory> protocolFactory,
397
+ boost::shared_ptr<TFileReaderTransport> inputTransport);
398
+
399
+ TFileProcessor(boost::shared_ptr<TProcessor> processor,
400
+ boost::shared_ptr<TProtocolFactory> inputProtocolFactory,
401
+ boost::shared_ptr<TProtocolFactory> outputProtocolFactory,
402
+ boost::shared_ptr<TFileReaderTransport> inputTransport);
403
+
404
+ /**
405
+ * Constructor
406
+ *
407
+ * @param processor processes log-file events
408
+ * @param protocolFactory protocol factory
409
+ * @param inputTransport input file transport
410
+ * @param output output transport
411
+ */
412
+ TFileProcessor(boost::shared_ptr<TProcessor> processor,
413
+ boost::shared_ptr<TProtocolFactory> protocolFactory,
414
+ boost::shared_ptr<TFileReaderTransport> inputTransport,
415
+ boost::shared_ptr<TTransport> outputTransport);
416
+
417
+ /**
418
+ * processes events from the file
419
+ *
420
+ * @param numEvents number of events to process (0 for unlimited)
421
+ * @param tail tails the file if true
422
+ */
423
+ void process(uint32_t numEvents, bool tail);
424
+
425
+ /**
426
+ * process events until the end of the chunk
427
+ *
428
+ */
429
+ void processChunk();
430
+
431
+ private:
432
+ boost::shared_ptr<TProcessor> processor_;
433
+ boost::shared_ptr<TProtocolFactory> inputProtocolFactory_;
434
+ boost::shared_ptr<TProtocolFactory> outputProtocolFactory_;
435
+ boost::shared_ptr<TFileReaderTransport> inputTransport_;
436
+ boost::shared_ptr<TTransport> outputTransport_;
437
+ };
438
+
439
+
440
+ }}} // apache::thrift::transport
441
+
442
+ #endif // _THRIFT_TRANSPORT_TFILETRANSPORT_H_
@@ -0,0 +1,348 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ #include <cstdlib>
21
+ #include <sstream>
22
+
23
+ #include "THttpClient.h"
24
+ #include "TSocket.h"
25
+
26
+ namespace apache { namespace thrift { namespace transport {
27
+
28
+ using namespace std;
29
+
30
+ /**
31
+ * Http client implementation.
32
+ *
33
+ */
34
+
35
+ // Yeah, yeah, hacky to put these here, I know.
36
+ static const char* CRLF = "\r\n";
37
+ static const int CRLF_LEN = 2;
38
+
39
+ THttpClient::THttpClient(boost::shared_ptr<TTransport> transport, string host, string path) :
40
+ transport_(transport),
41
+ host_(host),
42
+ path_(path),
43
+ readHeaders_(true),
44
+ chunked_(false),
45
+ chunkedDone_(false),
46
+ chunkSize_(0),
47
+ contentLength_(0),
48
+ httpBuf_(NULL),
49
+ httpPos_(0),
50
+ httpBufLen_(0),
51
+ httpBufSize_(1024) {
52
+ init();
53
+ }
54
+
55
+ THttpClient::THttpClient(string host, int port, string path) :
56
+ host_(host),
57
+ path_(path),
58
+ readHeaders_(true),
59
+ chunked_(false),
60
+ chunkedDone_(false),
61
+ chunkSize_(0),
62
+ contentLength_(0),
63
+ httpBuf_(NULL),
64
+ httpPos_(0),
65
+ httpBufLen_(0),
66
+ httpBufSize_(1024) {
67
+ transport_ = boost::shared_ptr<TTransport>(new TSocket(host, port));
68
+ init();
69
+ }
70
+
71
+ void THttpClient::init() {
72
+ httpBuf_ = (char*)std::malloc(httpBufSize_+1);
73
+ if (httpBuf_ == NULL) {
74
+ throw TTransportException("Out of memory.");
75
+ }
76
+ httpBuf_[httpBufLen_] = '\0';
77
+ }
78
+
79
+ THttpClient::~THttpClient() {
80
+ if (httpBuf_ != NULL) {
81
+ std::free(httpBuf_);
82
+ }
83
+ }
84
+
85
+ uint32_t THttpClient::read(uint8_t* buf, uint32_t len) {
86
+ if (readBuffer_.available_read() == 0) {
87
+ readBuffer_.resetBuffer();
88
+ uint32_t got = readMoreData();
89
+ if (got == 0) {
90
+ return 0;
91
+ }
92
+ }
93
+ return readBuffer_.read(buf, len);
94
+ }
95
+
96
+ void THttpClient::readEnd() {
97
+ // Read any pending chunked data (footers etc.)
98
+ if (chunked_) {
99
+ while (!chunkedDone_) {
100
+ readChunked();
101
+ }
102
+ }
103
+ }
104
+
105
+ uint32_t THttpClient::readMoreData() {
106
+ // Get more data!
107
+ refill();
108
+
109
+ if (readHeaders_) {
110
+ readHeaders();
111
+ }
112
+
113
+ if (chunked_) {
114
+ return readChunked();
115
+ } else {
116
+ return readContent(contentLength_);
117
+ }
118
+ }
119
+
120
+ uint32_t THttpClient::readChunked() {
121
+ uint32_t length = 0;
122
+
123
+ char* line = readLine();
124
+ uint32_t chunkSize = parseChunkSize(line);
125
+ if (chunkSize == 0) {
126
+ readChunkedFooters();
127
+ } else {
128
+ // Read data content
129
+ length += readContent(chunkSize);
130
+ // Read trailing CRLF after content
131
+ readLine();
132
+ }
133
+ return length;
134
+ }
135
+
136
+ void THttpClient::readChunkedFooters() {
137
+ // End of data, read footer lines until a blank one appears
138
+ while (true) {
139
+ char* line = readLine();
140
+ if (strlen(line) == 0) {
141
+ chunkedDone_ = true;
142
+ break;
143
+ }
144
+ }
145
+ }
146
+
147
+ uint32_t THttpClient::parseChunkSize(char* line) {
148
+ char* semi = strchr(line, ';');
149
+ if (semi != NULL) {
150
+ *semi = '\0';
151
+ }
152
+ int size = 0;
153
+ sscanf(line, "%x", &size);
154
+ return (uint32_t)size;
155
+ }
156
+
157
+ uint32_t THttpClient::readContent(uint32_t size) {
158
+ uint32_t need = size;
159
+ while (need > 0) {
160
+ uint32_t avail = httpBufLen_ - httpPos_;
161
+ if (avail == 0) {
162
+ // We have given all the data, reset position to head of the buffer
163
+ httpPos_ = 0;
164
+ httpBufLen_ = 0;
165
+ refill();
166
+
167
+ // Now have available however much we read
168
+ avail = httpBufLen_;
169
+ }
170
+ uint32_t give = avail;
171
+ if (need < give) {
172
+ give = need;
173
+ }
174
+ readBuffer_.write((uint8_t*)(httpBuf_+httpPos_), give);
175
+ httpPos_ += give;
176
+ need -= give;
177
+ }
178
+ return size;
179
+ }
180
+
181
+ char* THttpClient::readLine() {
182
+ while (true) {
183
+ char* eol = NULL;
184
+
185
+ eol = strstr(httpBuf_+httpPos_, CRLF);
186
+
187
+ // No CRLF yet?
188
+ if (eol == NULL) {
189
+ // Shift whatever we have now to front and refill
190
+ shift();
191
+ refill();
192
+ } else {
193
+ // Return pointer to next line
194
+ *eol = '\0';
195
+ char* line = httpBuf_+httpPos_;
196
+ httpPos_ = (eol-httpBuf_) + CRLF_LEN;
197
+ return line;
198
+ }
199
+ }
200
+
201
+ }
202
+
203
+ void THttpClient::shift() {
204
+ if (httpBufLen_ > httpPos_) {
205
+ // Shift down remaining data and read more
206
+ uint32_t length = httpBufLen_ - httpPos_;
207
+ memmove(httpBuf_, httpBuf_+httpPos_, length);
208
+ httpBufLen_ = length;
209
+ } else {
210
+ httpBufLen_ = 0;
211
+ }
212
+ httpPos_ = 0;
213
+ httpBuf_[httpBufLen_] = '\0';
214
+ }
215
+
216
+ void THttpClient::refill() {
217
+ uint32_t avail = httpBufSize_ - httpBufLen_;
218
+ if (avail <= (httpBufSize_ / 4)) {
219
+ httpBufSize_ *= 2;
220
+ httpBuf_ = (char*)std::realloc(httpBuf_, httpBufSize_+1);
221
+ if (httpBuf_ == NULL) {
222
+ throw TTransportException("Out of memory.");
223
+ }
224
+ }
225
+
226
+ // Read more data
227
+ uint32_t got = transport_->read((uint8_t*)(httpBuf_+httpBufLen_), httpBufSize_-httpBufLen_);
228
+ httpBufLen_ += got;
229
+ httpBuf_[httpBufLen_] = '\0';
230
+
231
+ if (got == 0) {
232
+ throw TTransportException("Could not refill buffer");
233
+ }
234
+ }
235
+
236
+ void THttpClient::readHeaders() {
237
+ // Initialize headers state variables
238
+ contentLength_ = 0;
239
+ chunked_ = false;
240
+ chunkedDone_ = false;
241
+ chunkSize_ = 0;
242
+
243
+ // Control state flow
244
+ bool statusLine = true;
245
+ bool finished = false;
246
+
247
+ // Loop until headers are finished
248
+ while (true) {
249
+ char* line = readLine();
250
+
251
+ if (strlen(line) == 0) {
252
+ if (finished) {
253
+ readHeaders_ = false;
254
+ return;
255
+ } else {
256
+ // Must have been an HTTP 100, keep going for another status line
257
+ statusLine = true;
258
+ }
259
+ } else {
260
+ if (statusLine) {
261
+ statusLine = false;
262
+ finished = parseStatusLine(line);
263
+ } else {
264
+ parseHeader(line);
265
+ }
266
+ }
267
+ }
268
+ }
269
+
270
+ bool THttpClient::parseStatusLine(char* status) {
271
+ char* http = status;
272
+
273
+ char* code = strchr(http, ' ');
274
+ if (code == NULL) {
275
+ throw TTransportException(string("Bad Status: ") + status);
276
+ }
277
+
278
+ *code = '\0';
279
+ while (*(code++) == ' ');
280
+
281
+ char* msg = strchr(code, ' ');
282
+ if (msg == NULL) {
283
+ throw TTransportException(string("Bad Status: ") + status);
284
+ }
285
+ *msg = '\0';
286
+
287
+ if (strcmp(code, "200") == 0) {
288
+ // HTTP 200 = OK, we got the response
289
+ return true;
290
+ } else if (strcmp(code, "100") == 0) {
291
+ // HTTP 100 = continue, just keep reading
292
+ return false;
293
+ } else {
294
+ throw TTransportException(string("Bad Status: ") + status);
295
+ }
296
+ }
297
+
298
+ void THttpClient::parseHeader(char* header) {
299
+ char* colon = strchr(header, ':');
300
+ if (colon == NULL) {
301
+ return;
302
+ }
303
+ uint32_t sz = colon - header;
304
+ char* value = colon+1;
305
+
306
+ if (strncmp(header, "Transfer-Encoding", sz) == 0) {
307
+ if (strstr(value, "chunked") != NULL) {
308
+ chunked_ = true;
309
+ }
310
+ } else if (strncmp(header, "Content-Length", sz) == 0) {
311
+ chunked_ = false;
312
+ contentLength_ = atoi(value);
313
+ }
314
+ }
315
+
316
+ void THttpClient::write(const uint8_t* buf, uint32_t len) {
317
+ writeBuffer_.write(buf, len);
318
+ }
319
+
320
+ void THttpClient::flush() {
321
+ // Fetch the contents of the write buffer
322
+ uint8_t* buf;
323
+ uint32_t len;
324
+ writeBuffer_.getBuffer(&buf, &len);
325
+
326
+ // Construct the HTTP header
327
+ std::ostringstream h;
328
+ h <<
329
+ "POST " << path_ << " HTTP/1.1" << CRLF <<
330
+ "Host: " << host_ << CRLF <<
331
+ "Content-Type: application/x-thrift" << CRLF <<
332
+ "Content-Length: " << len << CRLF <<
333
+ "Accept: application/x-thrift" << CRLF <<
334
+ "User-Agent: C++/THttpClient" << CRLF <<
335
+ CRLF;
336
+ string header = h.str();
337
+
338
+ // Write the header, then the data, then flush
339
+ transport_->write((const uint8_t*)header.c_str(), header.size());
340
+ transport_->write(buf, len);
341
+ transport_->flush();
342
+
343
+ // Reset the buffer and header variables
344
+ writeBuffer_.resetBuffer();
345
+ readHeaders_ = true;
346
+ }
347
+
348
+ }}} // apache::thrift::transport