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,118 @@
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
+ %%% Todo: this might be better off as a gen_server type of transport
21
+ %%% that handles stuff like group commit, similar to TFileTransport
22
+ %%% in cpp land
23
+ -module(thrift_disk_log_transport).
24
+
25
+ -behaviour(thrift_transport).
26
+
27
+ %% API
28
+ -export([new/2, new_transport_factory/2, new_transport_factory/3]).
29
+
30
+ %% thrift_transport callbacks
31
+ -export([read/2, write/2, force_flush/1, flush/1, close/1]).
32
+
33
+ %% state
34
+ -record(dl_transport, {log,
35
+ close_on_close = false,
36
+ sync_every = infinity,
37
+ sync_tref}).
38
+
39
+
40
+ %% Create a transport attached to an already open log.
41
+ %% If you'd like this transport to close the disk_log using disk_log:lclose()
42
+ %% when the transport is closed, pass a {close_on_close, true} tuple in the
43
+ %% Opts list.
44
+ new(LogName, Opts) when is_atom(LogName), is_list(Opts) ->
45
+ State = parse_opts(Opts, #dl_transport{log = LogName}),
46
+
47
+ State2 =
48
+ case State#dl_transport.sync_every of
49
+ N when is_integer(N), N > 0 ->
50
+ {ok, TRef} = timer:apply_interval(N, ?MODULE, force_flush, State),
51
+ State#dl_transport{sync_tref = TRef};
52
+ _ -> State
53
+ end,
54
+
55
+ thrift_transport:new(?MODULE, State2).
56
+
57
+
58
+ parse_opts([], State) ->
59
+ State;
60
+ parse_opts([{close_on_close, Bool} | Rest], State) when is_boolean(Bool) ->
61
+ State#dl_transport{close_on_close = Bool};
62
+ parse_opts([{sync_every, Int} | Rest], State) when is_integer(Int), Int > 0 ->
63
+ State#dl_transport{sync_every = Int}.
64
+
65
+
66
+ %%%% TRANSPORT IMPLENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
67
+
68
+ %% disk_log_transport is write-only
69
+ read(_State, Len) ->
70
+ {error, no_read_from_disk_log}.
71
+
72
+ write(#dl_transport{log = Log}, Data) ->
73
+ disk_log:balog(Log, erlang:iolist_to_binary(Data)).
74
+
75
+ force_flush(#dl_transport{log = Log}) ->
76
+ error_logger:info_msg("~p syncing~n", [?MODULE]),
77
+ disk_log:sync(Log).
78
+
79
+ flush(#dl_transport{log = Log, sync_every = SE}) ->
80
+ case SE of
81
+ undefined -> % no time-based sync
82
+ disk_log:sync(Log);
83
+ _Else -> % sync will happen automagically
84
+ ok
85
+ end.
86
+
87
+
88
+ %% On close, close the underlying log if we're configured to do so.
89
+ close(#dl_transport{close_on_close = false}) ->
90
+ ok;
91
+ close(#dl_transport{log = Log}) ->
92
+ disk_log:lclose(Log).
93
+
94
+
95
+ %%%% FACTORY GENERATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96
+
97
+ new_transport_factory(Name, ExtraLogOpts) ->
98
+ new_transport_factory(Name, ExtraLogOpts, [{close_on_close, true},
99
+ {sync_every, 500}]).
100
+
101
+ new_transport_factory(Name, ExtraLogOpts, TransportOpts) ->
102
+ F = fun() -> factory_impl(Name, ExtraLogOpts, TransportOpts) end,
103
+ {ok, F}.
104
+
105
+ factory_impl(Name, ExtraLogOpts, TransportOpts) ->
106
+ LogOpts = [{name, Name},
107
+ {format, external},
108
+ {type, wrap} |
109
+ ExtraLogOpts],
110
+ Log =
111
+ case disk_log:open(LogOpts) of
112
+ {ok, Log} ->
113
+ Log;
114
+ {repaired, Log, Info1, Info2} ->
115
+ error_logger:info_msg("Disk log ~p repaired: ~p, ~p~n", [Log, Info1, Info2]),
116
+ Log
117
+ end,
118
+ new(Log, TransportOpts).
@@ -0,0 +1,87 @@
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
+ -module(thrift_file_transport).
21
+
22
+ -behaviour(thrift_transport).
23
+
24
+ -export([new_reader/1,
25
+ new/1,
26
+ new/2,
27
+ write/2, read/2, flush/1, close/1]).
28
+
29
+ -record(t_file_transport, {device,
30
+ should_close = true,
31
+ mode = write}).
32
+
33
+ %%%% CONSTRUCTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
34
+
35
+ new_reader(Filename) ->
36
+ case file:open(Filename, [read, binary, {read_ahead, 1024*1024}]) of
37
+ {ok, IODevice} ->
38
+ new(IODevice, [{should_close, true}, {mode, read}]);
39
+ Error -> Error
40
+ end.
41
+
42
+ new(Device) ->
43
+ new(Device, []).
44
+
45
+ %% Device :: io_device()
46
+ %%
47
+ %% Device should be opened in raw and binary mode.
48
+ new(Device, Opts) when is_list(Opts) ->
49
+ State = parse_opts(Opts, #t_file_transport{device = Device}),
50
+ thrift_transport:new(?MODULE, State).
51
+
52
+
53
+ %% Parse options
54
+ parse_opts([{should_close, Bool} | Rest], State) when is_boolean(Bool) ->
55
+ parse_opts(Rest, State#t_file_transport{should_close = Bool});
56
+ parse_opts([{mode, Mode} | Rest], State)
57
+ when Mode =:= write;
58
+ Mode =:= read ->
59
+ parse_opts(Rest, State#t_file_transport{mode = Mode});
60
+ parse_opts([], State) ->
61
+ State.
62
+
63
+
64
+ %%%% TRANSPORT IMPL %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
65
+
66
+ write(#t_file_transport{device = Device, mode = write}, Data) ->
67
+ file:write(Device, Data);
68
+ write(_T, _D) ->
69
+ {error, read_mode}.
70
+
71
+
72
+ read(#t_file_transport{device = Device, mode = read}, Len)
73
+ when is_integer(Len), Len >= 0 ->
74
+ file:read(Device, Len);
75
+ read(_T, _D) ->
76
+ {error, read_mode}.
77
+
78
+ flush(#t_file_transport{device = Device, mode = write}) ->
79
+ file:sync(Device).
80
+
81
+ close(#t_file_transport{device = Device, should_close = SC}) ->
82
+ case SC of
83
+ true ->
84
+ file:close(Device);
85
+ false ->
86
+ ok
87
+ end.
@@ -0,0 +1,208 @@
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
+ -module(thrift_framed_transport).
21
+
22
+ -behaviour(gen_server).
23
+ -behaviour(thrift_transport).
24
+
25
+ %% API
26
+ -export([new/1]).
27
+
28
+ %% gen_server callbacks
29
+ -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
30
+ terminate/2, code_change/3]).
31
+
32
+ %% thrift_transport callbacks
33
+ -export([write/2, read/2, flush/1, close/1]).
34
+
35
+ -record(framed_transport, {wrapped, % a thrift_transport
36
+ read_buffer, % iolist()
37
+ write_buffer % iolist()
38
+ }).
39
+
40
+ %%====================================================================
41
+ %% API
42
+ %%====================================================================
43
+ %%--------------------------------------------------------------------
44
+ %% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
45
+ %% Description: Starts the server
46
+ %%--------------------------------------------------------------------
47
+ new(WrappedTransport) ->
48
+ case gen_server:start_link(?MODULE, [WrappedTransport], []) of
49
+ {ok, Pid} ->
50
+ thrift_transport:new(?MODULE, Pid);
51
+ Else ->
52
+ Else
53
+ end.
54
+
55
+ %%--------------------------------------------------------------------
56
+ %% Function: write(Transport, Data) -> ok
57
+ %%
58
+ %% Data = iolist()
59
+ %%
60
+ %% Description: Writes data into the buffer
61
+ %%--------------------------------------------------------------------
62
+ write(Transport, Data) ->
63
+ gen_server:call(Transport, {write, Data}).
64
+
65
+ %%--------------------------------------------------------------------
66
+ %% Function: flush(Transport) -> ok
67
+ %%
68
+ %% Description: Flushes the buffer through to the wrapped transport
69
+ %%--------------------------------------------------------------------
70
+ flush(Transport) ->
71
+ gen_server:call(Transport, flush).
72
+
73
+ %%--------------------------------------------------------------------
74
+ %% Function: close(Transport) -> ok
75
+ %%
76
+ %% Description: Closes the transport and the wrapped transport
77
+ %%--------------------------------------------------------------------
78
+ close(Transport) ->
79
+ gen_server:cast(Transport, close).
80
+
81
+ %%--------------------------------------------------------------------
82
+ %% Function: Read(Transport, Len) -> {ok, Data}
83
+ %%
84
+ %% Data = binary()
85
+ %%
86
+ %% Description: Reads data through from the wrapped transoprt
87
+ %%--------------------------------------------------------------------
88
+ read(Transport, Len) when is_integer(Len) ->
89
+ gen_server:call(Transport, {read, Len}).
90
+
91
+ %%====================================================================
92
+ %% gen_server callbacks
93
+ %%====================================================================
94
+
95
+ %%--------------------------------------------------------------------
96
+ %% Function: init(Args) -> {ok, State} |
97
+ %% {ok, State, Timeout} |
98
+ %% ignore |
99
+ %% {stop, Reason}
100
+ %% Description: Initiates the server
101
+ %%--------------------------------------------------------------------
102
+ init([Wrapped]) ->
103
+ {ok, #framed_transport{wrapped = Wrapped,
104
+ read_buffer = [],
105
+ write_buffer = []}}.
106
+
107
+ %%--------------------------------------------------------------------
108
+ %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
109
+ %% {reply, Reply, State, Timeout} |
110
+ %% {noreply, State} |
111
+ %% {noreply, State, Timeout} |
112
+ %% {stop, Reason, Reply, State} |
113
+ %% {stop, Reason, State}
114
+ %% Description: Handling call messages
115
+ %%--------------------------------------------------------------------
116
+ handle_call({write, Data}, _From, State = #framed_transport{write_buffer = WBuf}) ->
117
+ {reply, ok, State#framed_transport{write_buffer = [WBuf, Data]}};
118
+
119
+ handle_call({read, Len}, _From, State = #framed_transport{wrapped = Wrapped,
120
+ read_buffer = RBuf}) ->
121
+ {RBuf1, RBuf1Size} =
122
+ %% if the read buffer is empty, read another frame
123
+ %% otherwise, just read from what's left in the buffer
124
+ case iolist_size(RBuf) of
125
+ 0 ->
126
+ %% read the frame length
127
+ {ok, <<FrameLen:32/integer-signed-big, _/binary>>} =
128
+ thrift_transport:read(Wrapped, 4),
129
+ %% then read the data
130
+ {ok, Bin} =
131
+ thrift_transport:read(Wrapped, FrameLen),
132
+ {Bin, erlang:byte_size(Bin)};
133
+ Sz ->
134
+ {RBuf, Sz}
135
+ end,
136
+
137
+ %% pull off Give bytes, return them to the user, leave the rest in the buffer
138
+ Give = min(RBuf1Size, Len),
139
+ <<Data:Give/binary, RBuf2/binary>> = iolist_to_binary(RBuf1),
140
+
141
+ Response = {ok, Data},
142
+ State1 = State#framed_transport{read_buffer=RBuf2},
143
+
144
+ {reply, Response, State1};
145
+
146
+ handle_call(flush, _From, State) ->
147
+ {Response, State1} = do_flush(State),
148
+ {reply, Response, State1}.
149
+
150
+ %%--------------------------------------------------------------------
151
+ %% Function: handle_cast(Msg, State) -> {noreply, State} |
152
+ %% {noreply, State, Timeout} |
153
+ %% {stop, Reason, State}
154
+ %% Description: Handling cast messages
155
+ %%--------------------------------------------------------------------
156
+ handle_cast(close, State) ->
157
+ {_, State1} = do_flush(State),
158
+ %% Wrapped is closed by terminate/2
159
+ %% error_logger:info_msg("thrift_framed_transport ~p: closing", [self()]),
160
+ {stop, normal, State};
161
+ handle_cast(Msg, State=#framed_transport{}) ->
162
+ {noreply, State}.
163
+
164
+ %%--------------------------------------------------------------------
165
+ %% Function: handle_info(Info, State) -> {noreply, State} |
166
+ %% {noreply, State, Timeout} |
167
+ %% {stop, Reason, State}
168
+ %% Description: Handling all non call/cast messages
169
+ %%--------------------------------------------------------------------
170
+ handle_info(_Info, State) ->
171
+ {noreply, State}.
172
+
173
+ %%--------------------------------------------------------------------
174
+ %% Function: terminate(Reason, State) -> void()
175
+ %% Description: This function is called by a gen_server when it is about to
176
+ %% terminate. It should be the opposite of Module:init/1 and do any necessary
177
+ %% cleaning up. When it returns, the gen_server terminates with Reason.
178
+ %% The return value is ignored.
179
+ %%--------------------------------------------------------------------
180
+ terminate(_Reason, State = #framed_transport{wrapped=Wrapped}) ->
181
+ thrift_transport:close(Wrapped),
182
+ ok.
183
+
184
+ %%--------------------------------------------------------------------
185
+ %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
186
+ %% Description: Convert process state when code is changed
187
+ %%--------------------------------------------------------------------
188
+ code_change(_OldVsn, State, _Extra) ->
189
+ {ok, State}.
190
+
191
+ %%--------------------------------------------------------------------
192
+ %%% Internal functions
193
+ %%--------------------------------------------------------------------
194
+ do_flush(State = #framed_transport{write_buffer = Buffer,
195
+ wrapped = Wrapped}) ->
196
+ FrameLen = iolist_size(Buffer),
197
+ Data = [<<FrameLen:32/integer-signed-big>>, Buffer],
198
+
199
+ Response = thrift_transport:write(Wrapped, Data),
200
+
201
+ thrift_transport:flush(Wrapped),
202
+
203
+ State1 = State#framed_transport{write_buffer = []},
204
+ {Response, State1}.
205
+
206
+ min(A,B) when A<B -> A;
207
+ min(_,B) -> B.
208
+
@@ -0,0 +1,199 @@
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
+ -module(thrift_http_transport).
21
+
22
+ -behaviour(gen_server).
23
+ -behaviour(thrift_transport).
24
+
25
+ %% API
26
+ -export([new/2, new/3]).
27
+
28
+ %% gen_server callbacks
29
+ -export([init/1,
30
+ handle_call/3,
31
+ handle_cast/2,
32
+ handle_info/2,
33
+ terminate/2,
34
+ code_change/3]).
35
+
36
+ %% thrift_transport callbacks
37
+ -export([write/2, read/2, flush/1, close/1]).
38
+
39
+ -record(http_transport, {host, % string()
40
+ path, % string()
41
+ read_buffer, % iolist()
42
+ write_buffer, % iolist()
43
+ http_options, % see http(3)
44
+ extra_headers % [{str(), str()}, ...]
45
+ }).
46
+
47
+ %%====================================================================
48
+ %% API
49
+ %%====================================================================
50
+ %%--------------------------------------------------------------------
51
+ %% Function: new() -> {ok, Transport} | ignore | {error,Error}
52
+ %% Description: Starts the server
53
+ %%--------------------------------------------------------------------
54
+ new(Host, Path) ->
55
+ new(Host, Path, _Options = []).
56
+
57
+ %%--------------------------------------------------------------------
58
+ %% Options include:
59
+ %% {http_options, HttpOptions} = See http(3)
60
+ %% {extra_headers, ExtraHeaders} = List of extra HTTP headers
61
+ %%--------------------------------------------------------------------
62
+ new(Host, Path, Options) ->
63
+ case gen_server:start_link(?MODULE, {Host, Path, Options}, []) of
64
+ {ok, Pid} ->
65
+ thrift_transport:new(?MODULE, Pid);
66
+ Else ->
67
+ Else
68
+ end.
69
+
70
+ %%--------------------------------------------------------------------
71
+ %% Function: write(Transport, Data) -> ok
72
+ %%
73
+ %% Data = iolist()
74
+ %%
75
+ %% Description: Writes data into the buffer
76
+ %%--------------------------------------------------------------------
77
+ write(Transport, Data) ->
78
+ gen_server:call(Transport, {write, Data}).
79
+
80
+ %%--------------------------------------------------------------------
81
+ %% Function: flush(Transport) -> ok
82
+ %%
83
+ %% Description: Flushes the buffer, making a request
84
+ %%--------------------------------------------------------------------
85
+ flush(Transport) ->
86
+ gen_server:call(Transport, flush).
87
+
88
+ %%--------------------------------------------------------------------
89
+ %% Function: close(Transport) -> ok
90
+ %%
91
+ %% Description: Closes the transport
92
+ %%--------------------------------------------------------------------
93
+ close(Transport) ->
94
+ gen_server:cast(Transport, close).
95
+
96
+ %%--------------------------------------------------------------------
97
+ %% Function: Read(Transport, Len) -> {ok, Data}
98
+ %%
99
+ %% Data = binary()
100
+ %%
101
+ %% Description: Reads data through from the wrapped transoprt
102
+ %%--------------------------------------------------------------------
103
+ read(Transport, Len) when is_integer(Len) ->
104
+ gen_server:call(Transport, {read, Len}).
105
+
106
+ %%====================================================================
107
+ %% gen_server callbacks
108
+ %%====================================================================
109
+
110
+ init({Host, Path, Options}) ->
111
+ State1 = #http_transport{host = Host,
112
+ path = Path,
113
+ read_buffer = [],
114
+ write_buffer = [],
115
+ http_options = [],
116
+ extra_headers = []},
117
+ ApplyOption =
118
+ fun
119
+ ({http_options, HttpOpts}, State = #http_transport{}) ->
120
+ State#http_transport{http_options = HttpOpts};
121
+ ({extra_headers, ExtraHeaders}, State = #http_transport{}) ->
122
+ State#http_transport{extra_headers = ExtraHeaders};
123
+ (Other, #http_transport{}) ->
124
+ {invalid_option, Other};
125
+ (_, Error) ->
126
+ Error
127
+ end,
128
+ case lists:foldl(ApplyOption, State1, Options) of
129
+ State2 = #http_transport{} ->
130
+ {ok, State2};
131
+ Else ->
132
+ {stop, Else}
133
+ end.
134
+
135
+ handle_call({write, Data}, _From, State = #http_transport{write_buffer = WBuf}) ->
136
+ {reply, ok, State#http_transport{write_buffer = [WBuf, Data]}};
137
+
138
+ handle_call({read, Len}, _From, State = #http_transport{read_buffer = RBuf}) ->
139
+ %% Pull off Give bytes, return them to the user, leave the rest in the buffer.
140
+ Give = min(iolist_size(RBuf), Len),
141
+ case iolist_to_binary(RBuf) of
142
+ <<Data:Give/binary, RBuf1/binary>> ->
143
+ Response = {ok, Data},
144
+ State1 = State#http_transport{read_buffer=RBuf1},
145
+ {reply, Response, State1};
146
+ _ ->
147
+ {reply, {error, 'EOF'}, State}
148
+ end;
149
+
150
+ handle_call(flush, _From, State) ->
151
+ {Response, State1} = do_flush(State),
152
+ {reply, Response, State1}.
153
+
154
+ handle_cast(close, State) ->
155
+ {_, State1} = do_flush(State),
156
+ {stop, normal, State1};
157
+
158
+ handle_cast(_Msg, State=#http_transport{}) ->
159
+ {noreply, State}.
160
+
161
+ handle_info(_Info, State) ->
162
+ {noreply, State}.
163
+
164
+ terminate(_Reason, _State) ->
165
+ ok.
166
+
167
+ code_change(_OldVsn, State, _Extra) ->
168
+ {ok, State}.
169
+
170
+ %%--------------------------------------------------------------------
171
+ %%% Internal functions
172
+ %%--------------------------------------------------------------------
173
+ do_flush(State = #http_transport{host = Host,
174
+ path = Path,
175
+ read_buffer = Rbuf,
176
+ write_buffer = Wbuf,
177
+ http_options = HttpOptions,
178
+ extra_headers = ExtraHeaders}) ->
179
+ case iolist_to_binary(Wbuf) of
180
+ <<>> ->
181
+ %% Don't bother flushing empty buffers.
182
+ {ok, State};
183
+ WBinary ->
184
+ {ok, {{_Version, 200, _ReasonPhrase}, _Headers, Body}} =
185
+ http:request(post,
186
+ {"http://" ++ Host ++ Path,
187
+ [{"User-Agent", "Erlang/thrift_http_transport"} | ExtraHeaders],
188
+ "application/x-thrift",
189
+ WBinary},
190
+ HttpOptions,
191
+ [{body_format, binary}]),
192
+
193
+ State1 = State#http_transport{read_buffer = [Rbuf, Body],
194
+ write_buffer = []},
195
+ {ok, State1}
196
+ end.
197
+
198
+ min(A,B) when A<B -> A;
199
+ min(_,B) -> B.