sidekick-client 0.1.0

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 (247) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +52 -0
  6. data/VERSION +1 -0
  7. data/lib/ext/README +1 -0
  8. data/lib/ext/bunny-0.6.0/LICENSE +20 -0
  9. data/lib/ext/bunny-0.6.0/README.rdoc +66 -0
  10. data/lib/ext/bunny-0.6.0/Rakefile +24 -0
  11. data/lib/ext/bunny-0.6.0/bunny.gemspec +65 -0
  12. data/lib/ext/bunny-0.6.0/examples/simple_08.rb +30 -0
  13. data/lib/ext/bunny-0.6.0/examples/simple_09.rb +30 -0
  14. data/lib/ext/bunny-0.6.0/examples/simple_ack_08.rb +33 -0
  15. data/lib/ext/bunny-0.6.0/examples/simple_ack_09.rb +33 -0
  16. data/lib/ext/bunny-0.6.0/examples/simple_consumer_08.rb +53 -0
  17. data/lib/ext/bunny-0.6.0/examples/simple_consumer_09.rb +53 -0
  18. data/lib/ext/bunny-0.6.0/examples/simple_fanout_08.rb +39 -0
  19. data/lib/ext/bunny-0.6.0/examples/simple_fanout_09.rb +39 -0
  20. data/lib/ext/bunny-0.6.0/examples/simple_headers_08.rb +40 -0
  21. data/lib/ext/bunny-0.6.0/examples/simple_headers_09.rb +40 -0
  22. data/lib/ext/bunny-0.6.0/examples/simple_publisher_08.rb +27 -0
  23. data/lib/ext/bunny-0.6.0/examples/simple_publisher_09.rb +27 -0
  24. data/lib/ext/bunny-0.6.0/examples/simple_topic_08.rb +59 -0
  25. data/lib/ext/bunny-0.6.0/examples/simple_topic_09.rb +59 -0
  26. data/lib/ext/bunny-0.6.0/lib/bunny/channel08.rb +39 -0
  27. data/lib/ext/bunny-0.6.0/lib/bunny/channel09.rb +39 -0
  28. data/lib/ext/bunny-0.6.0/lib/bunny/client08.rb +494 -0
  29. data/lib/ext/bunny-0.6.0/lib/bunny/client09.rb +460 -0
  30. data/lib/ext/bunny-0.6.0/lib/bunny/exchange08.rb +175 -0
  31. data/lib/ext/bunny-0.6.0/lib/bunny/exchange09.rb +177 -0
  32. data/lib/ext/bunny-0.6.0/lib/bunny/queue08.rb +389 -0
  33. data/lib/ext/bunny-0.6.0/lib/bunny/queue09.rb +395 -0
  34. data/lib/ext/bunny-0.6.0/lib/bunny/subscription08.rb +85 -0
  35. data/lib/ext/bunny-0.6.0/lib/bunny/subscription09.rb +85 -0
  36. data/lib/ext/bunny-0.6.0/lib/bunny.rb +87 -0
  37. data/lib/ext/bunny-0.6.0/lib/qrack/channel.rb +18 -0
  38. data/lib/ext/bunny-0.6.0/lib/qrack/client.rb +204 -0
  39. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/protocol08.rb +132 -0
  40. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/protocol09.rb +133 -0
  41. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/spec08.rb +823 -0
  42. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/spec09.rb +521 -0
  43. data/lib/ext/bunny-0.6.0/lib/qrack/qrack08.rb +23 -0
  44. data/lib/ext/bunny-0.6.0/lib/qrack/qrack09.rb +23 -0
  45. data/lib/ext/bunny-0.6.0/lib/qrack/queue.rb +53 -0
  46. data/lib/ext/bunny-0.6.0/lib/qrack/subscription.rb +102 -0
  47. data/lib/ext/bunny-0.6.0/lib/qrack/transport/buffer08.rb +276 -0
  48. data/lib/ext/bunny-0.6.0/lib/qrack/transport/buffer09.rb +276 -0
  49. data/lib/ext/bunny-0.6.0/lib/qrack/transport/frame08.rb +112 -0
  50. data/lib/ext/bunny-0.6.0/lib/qrack/transport/frame09.rb +94 -0
  51. data/lib/ext/bunny-0.6.0/spec/spec_08/bunny_spec.rb +65 -0
  52. data/lib/ext/bunny-0.6.0/spec/spec_08/connection_spec.rb +12 -0
  53. data/lib/ext/bunny-0.6.0/spec/spec_08/exchange_spec.rb +162 -0
  54. data/lib/ext/bunny-0.6.0/spec/spec_08/queue_spec.rb +206 -0
  55. data/lib/ext/bunny-0.6.0/spec/spec_09/bunny_spec.rb +65 -0
  56. data/lib/ext/bunny-0.6.0/spec/spec_09/connection_spec.rb +12 -0
  57. data/lib/ext/bunny-0.6.0/spec/spec_09/exchange_spec.rb +162 -0
  58. data/lib/ext/bunny-0.6.0/spec/spec_09/queue_spec.rb +205 -0
  59. data/lib/ext/eventmachine-0.12.10/.gitignore +14 -0
  60. data/lib/ext/eventmachine-0.12.10/README +82 -0
  61. data/lib/ext/eventmachine-0.12.10/Rakefile +374 -0
  62. data/lib/ext/eventmachine-0.12.10/docs/COPYING +60 -0
  63. data/lib/ext/eventmachine-0.12.10/docs/ChangeLog +211 -0
  64. data/lib/ext/eventmachine-0.12.10/docs/DEFERRABLES +133 -0
  65. data/lib/ext/eventmachine-0.12.10/docs/EPOLL +141 -0
  66. data/lib/ext/eventmachine-0.12.10/docs/GNU +281 -0
  67. data/lib/ext/eventmachine-0.12.10/docs/INSTALL +13 -0
  68. data/lib/ext/eventmachine-0.12.10/docs/KEYBOARD +38 -0
  69. data/lib/ext/eventmachine-0.12.10/docs/LEGAL +25 -0
  70. data/lib/ext/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +70 -0
  71. data/lib/ext/eventmachine-0.12.10/docs/PURE_RUBY +75 -0
  72. data/lib/ext/eventmachine-0.12.10/docs/RELEASE_NOTES +94 -0
  73. data/lib/ext/eventmachine-0.12.10/docs/SMTP +2 -0
  74. data/lib/ext/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +89 -0
  75. data/lib/ext/eventmachine-0.12.10/docs/TODO +8 -0
  76. data/lib/ext/eventmachine-0.12.10/eventmachine.gemspec +40 -0
  77. data/lib/ext/eventmachine-0.12.10/examples/ex_channel.rb +43 -0
  78. data/lib/ext/eventmachine-0.12.10/examples/ex_queue.rb +2 -0
  79. data/lib/ext/eventmachine-0.12.10/examples/helper.rb +2 -0
  80. data/lib/ext/eventmachine-0.12.10/ext/binder.cpp +125 -0
  81. data/lib/ext/eventmachine-0.12.10/ext/binder.h +46 -0
  82. data/lib/ext/eventmachine-0.12.10/ext/cmain.cpp +827 -0
  83. data/lib/ext/eventmachine-0.12.10/ext/cplusplus.cpp +202 -0
  84. data/lib/ext/eventmachine-0.12.10/ext/ed.cpp +1893 -0
  85. data/lib/ext/eventmachine-0.12.10/ext/ed.h +424 -0
  86. data/lib/ext/eventmachine-0.12.10/ext/em.cpp +2282 -0
  87. data/lib/ext/eventmachine-0.12.10/ext/em.h +232 -0
  88. data/lib/ext/eventmachine-0.12.10/ext/emwin.cpp +300 -0
  89. data/lib/ext/eventmachine-0.12.10/ext/emwin.h +94 -0
  90. data/lib/ext/eventmachine-0.12.10/ext/epoll.cpp +26 -0
  91. data/lib/ext/eventmachine-0.12.10/ext/epoll.h +25 -0
  92. data/lib/ext/eventmachine-0.12.10/ext/eventmachine.h +122 -0
  93. data/lib/ext/eventmachine-0.12.10/ext/eventmachine_cpp.h +96 -0
  94. data/lib/ext/eventmachine-0.12.10/ext/extconf.rb +148 -0
  95. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +83 -0
  96. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +214 -0
  97. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.h +59 -0
  98. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +127 -0
  99. data/lib/ext/eventmachine-0.12.10/ext/files.cpp +94 -0
  100. data/lib/ext/eventmachine-0.12.10/ext/files.h +65 -0
  101. data/lib/ext/eventmachine-0.12.10/ext/kb.cpp +81 -0
  102. data/lib/ext/eventmachine-0.12.10/ext/page.cpp +107 -0
  103. data/lib/ext/eventmachine-0.12.10/ext/page.h +51 -0
  104. data/lib/ext/eventmachine-0.12.10/ext/pipe.cpp +349 -0
  105. data/lib/ext/eventmachine-0.12.10/ext/project.h +151 -0
  106. data/lib/ext/eventmachine-0.12.10/ext/rubymain.cpp +1166 -0
  107. data/lib/ext/eventmachine-0.12.10/ext/sigs.cpp +89 -0
  108. data/lib/ext/eventmachine-0.12.10/ext/sigs.h +32 -0
  109. data/lib/ext/eventmachine-0.12.10/ext/ssl.cpp +460 -0
  110. data/lib/ext/eventmachine-0.12.10/ext/ssl.h +94 -0
  111. data/lib/ext/eventmachine-0.12.10/java/.classpath +8 -0
  112. data/lib/ext/eventmachine-0.12.10/java/.project +17 -0
  113. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +570 -0
  114. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +40 -0
  115. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +69 -0
  116. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +189 -0
  117. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +364 -0
  118. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +194 -0
  119. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +74 -0
  120. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +37 -0
  121. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +46 -0
  122. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +38 -0
  123. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +54 -0
  124. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +109 -0
  125. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +148 -0
  126. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +80 -0
  127. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +53 -0
  128. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +75 -0
  129. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +90 -0
  130. data/lib/ext/eventmachine-0.12.10/lib/em/buftok.rb +138 -0
  131. data/lib/ext/eventmachine-0.12.10/lib/em/callback.rb +26 -0
  132. data/lib/ext/eventmachine-0.12.10/lib/em/channel.rb +57 -0
  133. data/lib/ext/eventmachine-0.12.10/lib/em/connection.rb +564 -0
  134. data/lib/ext/eventmachine-0.12.10/lib/em/deferrable.rb +192 -0
  135. data/lib/ext/eventmachine-0.12.10/lib/em/file_watch.rb +54 -0
  136. data/lib/ext/eventmachine-0.12.10/lib/em/future.rb +61 -0
  137. data/lib/ext/eventmachine-0.12.10/lib/em/messages.rb +66 -0
  138. data/lib/ext/eventmachine-0.12.10/lib/em/process_watch.rb +44 -0
  139. data/lib/ext/eventmachine-0.12.10/lib/em/processes.rb +119 -0
  140. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +138 -0
  141. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +263 -0
  142. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +590 -0
  143. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +125 -0
  144. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +161 -0
  145. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/memcache.rb +323 -0
  146. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +45 -0
  147. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +247 -0
  148. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +175 -0
  149. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +357 -0
  150. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +547 -0
  151. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/socks4.rb +66 -0
  152. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/stomp.rb +200 -0
  153. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +53 -0
  154. data/lib/ext/eventmachine-0.12.10/lib/em/protocols.rb +36 -0
  155. data/lib/ext/eventmachine-0.12.10/lib/em/queue.rb +61 -0
  156. data/lib/ext/eventmachine-0.12.10/lib/em/spawnable.rb +85 -0
  157. data/lib/ext/eventmachine-0.12.10/lib/em/streamer.rb +130 -0
  158. data/lib/ext/eventmachine-0.12.10/lib/em/timers.rb +56 -0
  159. data/lib/ext/eventmachine-0.12.10/lib/em/version.rb +3 -0
  160. data/lib/ext/eventmachine-0.12.10/lib/eventmachine.rb +1592 -0
  161. data/lib/ext/eventmachine-0.12.10/lib/evma/callback.rb +32 -0
  162. data/lib/ext/eventmachine-0.12.10/lib/evma/container.rb +75 -0
  163. data/lib/ext/eventmachine-0.12.10/lib/evma/factory.rb +77 -0
  164. data/lib/ext/eventmachine-0.12.10/lib/evma/protocol.rb +87 -0
  165. data/lib/ext/eventmachine-0.12.10/lib/evma/reactor.rb +48 -0
  166. data/lib/ext/eventmachine-0.12.10/lib/evma.rb +32 -0
  167. data/lib/ext/eventmachine-0.12.10/lib/jeventmachine.rb +257 -0
  168. data/lib/ext/eventmachine-0.12.10/lib/pr_eventmachine.rb +1022 -0
  169. data/lib/ext/eventmachine-0.12.10/setup.rb +1585 -0
  170. data/lib/ext/eventmachine-0.12.10/tasks/cpp.rake_example +77 -0
  171. data/lib/ext/eventmachine-0.12.10/tests/client.crt +31 -0
  172. data/lib/ext/eventmachine-0.12.10/tests/client.key +51 -0
  173. data/lib/ext/eventmachine-0.12.10/tests/test_attach.rb +126 -0
  174. data/lib/ext/eventmachine-0.12.10/tests/test_basic.rb +284 -0
  175. data/lib/ext/eventmachine-0.12.10/tests/test_channel.rb +63 -0
  176. data/lib/ext/eventmachine-0.12.10/tests/test_connection_count.rb +35 -0
  177. data/lib/ext/eventmachine-0.12.10/tests/test_defer.rb +47 -0
  178. data/lib/ext/eventmachine-0.12.10/tests/test_epoll.rb +160 -0
  179. data/lib/ext/eventmachine-0.12.10/tests/test_error_handler.rb +35 -0
  180. data/lib/ext/eventmachine-0.12.10/tests/test_errors.rb +82 -0
  181. data/lib/ext/eventmachine-0.12.10/tests/test_exc.rb +55 -0
  182. data/lib/ext/eventmachine-0.12.10/tests/test_file_watch.rb +49 -0
  183. data/lib/ext/eventmachine-0.12.10/tests/test_futures.rb +198 -0
  184. data/lib/ext/eventmachine-0.12.10/tests/test_get_sock_opt.rb +30 -0
  185. data/lib/ext/eventmachine-0.12.10/tests/test_handler_check.rb +37 -0
  186. data/lib/ext/eventmachine-0.12.10/tests/test_hc.rb +218 -0
  187. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient.rb +218 -0
  188. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient2.rb +153 -0
  189. data/lib/ext/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +50 -0
  190. data/lib/ext/eventmachine-0.12.10/tests/test_kb.rb +60 -0
  191. data/lib/ext/eventmachine-0.12.10/tests/test_ltp.rb +182 -0
  192. data/lib/ext/eventmachine-0.12.10/tests/test_ltp2.rb +317 -0
  193. data/lib/ext/eventmachine-0.12.10/tests/test_next_tick.rb +133 -0
  194. data/lib/ext/eventmachine-0.12.10/tests/test_object_protocol.rb +37 -0
  195. data/lib/ext/eventmachine-0.12.10/tests/test_pause.rb +70 -0
  196. data/lib/ext/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +48 -0
  197. data/lib/ext/eventmachine-0.12.10/tests/test_process_watch.rb +48 -0
  198. data/lib/ext/eventmachine-0.12.10/tests/test_processes.rb +128 -0
  199. data/lib/ext/eventmachine-0.12.10/tests/test_proxy_connection.rb +92 -0
  200. data/lib/ext/eventmachine-0.12.10/tests/test_pure.rb +125 -0
  201. data/lib/ext/eventmachine-0.12.10/tests/test_queue.rb +44 -0
  202. data/lib/ext/eventmachine-0.12.10/tests/test_running.rb +42 -0
  203. data/lib/ext/eventmachine-0.12.10/tests/test_sasl.rb +72 -0
  204. data/lib/ext/eventmachine-0.12.10/tests/test_send_file.rb +242 -0
  205. data/lib/ext/eventmachine-0.12.10/tests/test_servers.rb +76 -0
  206. data/lib/ext/eventmachine-0.12.10/tests/test_smtpclient.rb +83 -0
  207. data/lib/ext/eventmachine-0.12.10/tests/test_smtpserver.rb +85 -0
  208. data/lib/ext/eventmachine-0.12.10/tests/test_spawn.rb +322 -0
  209. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_args.rb +79 -0
  210. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_methods.rb +50 -0
  211. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_verify.rb +82 -0
  212. data/lib/ext/eventmachine-0.12.10/tests/test_timers.rb +162 -0
  213. data/lib/ext/eventmachine-0.12.10/tests/test_ud.rb +36 -0
  214. data/lib/ext/eventmachine-0.12.10/tests/testem.rb +31 -0
  215. data/lib/ext/eventmachine-0.12.10/web/whatis +7 -0
  216. data/lib/ext/misc/README +1 -0
  217. data/lib/ext/misc/indifferent_access.rb +131 -0
  218. data/lib/ext/uuidtools-2.1.1/CHANGELOG +56 -0
  219. data/lib/ext/uuidtools-2.1.1/LICENSE +20 -0
  220. data/lib/ext/uuidtools-2.1.1/README +13 -0
  221. data/lib/ext/uuidtools-2.1.1/Rakefile +48 -0
  222. data/lib/ext/uuidtools-2.1.1/lib/compat/securerandom.rb +202 -0
  223. data/lib/ext/uuidtools-2.1.1/lib/uuidtools/version.rb +35 -0
  224. data/lib/ext/uuidtools-2.1.1/lib/uuidtools.rb +618 -0
  225. data/lib/ext/uuidtools-2.1.1/spec/spec.opts +1 -0
  226. data/lib/ext/uuidtools-2.1.1/spec/spec_helper.rb +7 -0
  227. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/mac_address_spec.rb +15 -0
  228. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/utility_spec.rb +21 -0
  229. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/uuid_creation_spec.rb +121 -0
  230. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/uuid_parsing_spec.rb +127 -0
  231. data/lib/ext/uuidtools-2.1.1/tasks/benchmark.rake +38 -0
  232. data/lib/ext/uuidtools-2.1.1/tasks/clobber.rake +2 -0
  233. data/lib/ext/uuidtools-2.1.1/tasks/gem.rake +68 -0
  234. data/lib/ext/uuidtools-2.1.1/tasks/git.rake +40 -0
  235. data/lib/ext/uuidtools-2.1.1/tasks/metrics.rake +22 -0
  236. data/lib/ext/uuidtools-2.1.1/tasks/rdoc.rake +29 -0
  237. data/lib/ext/uuidtools-2.1.1/tasks/rubyforge.rake +89 -0
  238. data/lib/ext/uuidtools-2.1.1/tasks/spec.rake +64 -0
  239. data/lib/ext/uuidtools-2.1.1/website/index.html +95 -0
  240. data/lib/sidekick/client/sidekick_client.rb +46 -0
  241. data/lib/sidekick/shared/sidekick_logger.rb +14 -0
  242. data/lib/sidekick/shared/sidekick_queue_publisher.rb +91 -0
  243. data/lib/sidekick-client.rb +7 -0
  244. data/sidekick-client.gemspec +289 -0
  245. data/test/helper.rb +10 -0
  246. data/test/test_sidekick-client.rb +7 -0
  247. metadata +311 -0
@@ -0,0 +1,133 @@
1
+ module Qrack
2
+ module Protocol09
3
+ #:stopdoc:
4
+ class Class::Method
5
+ def initialize *args
6
+ opts = args.pop if args.last.is_a? Hash
7
+ opts ||= {}
8
+
9
+ if args.size == 1 and args.first.is_a? Transport09::Buffer
10
+ buf = args.shift
11
+ else
12
+ buf = nil
13
+ end
14
+
15
+ self.class.arguments.each do |type, name|
16
+ val = buf ? buf.read(type) :
17
+ args.shift || opts[name] || opts[name.to_s]
18
+ instance_variable_set("@#{name}", val)
19
+ end
20
+ end
21
+
22
+ def arguments
23
+ self.class.arguments.inject({}) do |hash, (type, name)|
24
+ hash.update name => instance_variable_get("@#{name}")
25
+ end
26
+ end
27
+
28
+ def to_binary
29
+ buf = Transport09::Buffer.new
30
+ buf.write :short, self.class.parent.id
31
+ buf.write :short, self.class.id
32
+
33
+ bits = []
34
+
35
+ self.class.arguments.each do |type, name|
36
+ val = instance_variable_get("@#{name}")
37
+ if type == :bit
38
+ bits << (val || false)
39
+ else
40
+ unless bits.empty?
41
+ buf.write :bit, bits
42
+ bits = []
43
+ end
44
+ buf.write type, val
45
+ end
46
+ end
47
+
48
+ buf.write :bit, bits unless bits.empty?
49
+ buf.rewind
50
+
51
+ buf
52
+ end
53
+
54
+ def to_s
55
+ to_binary.to_s
56
+ end
57
+
58
+ def to_frame channel = 0
59
+ Transport09::Method.new(self, channel)
60
+ end
61
+ end
62
+
63
+ class Header
64
+ def initialize *args
65
+ opts = args.pop if args.last.is_a? Hash
66
+ opts ||= {}
67
+
68
+ first = args.shift
69
+
70
+ if first.is_a? ::Class and first.ancestors.include? Protocol09::Class
71
+ @klass = first
72
+ @size = args.shift || 0
73
+ @weight = args.shift || 0
74
+ @properties = opts
75
+
76
+ elsif first.is_a? Transport09::Buffer or first.is_a? String
77
+ buf = first
78
+ buf = Transport09::Buffer.new(buf) unless buf.is_a? Transport09::Buffer
79
+
80
+ @klass = Protocol09.classes[buf.read(:short)]
81
+ @weight = buf.read(:short)
82
+ @size = buf.read(:longlong)
83
+
84
+ props = buf.read(:properties, *klass.properties.map{|type,_| type })
85
+ @properties = Hash[*klass.properties.map{|_,name| name }.zip(props).reject{|k,v| v.nil? }.flatten]
86
+
87
+ else
88
+ raise ArgumentError, 'Invalid argument'
89
+ end
90
+
91
+ end
92
+ attr_accessor :klass, :size, :weight, :properties
93
+
94
+ def to_binary
95
+ buf = Transport09::Buffer.new
96
+ buf.write :short, klass.id
97
+ buf.write :short, weight # XXX rabbitmq only supports weight == 0
98
+ buf.write :longlong, size
99
+ buf.write :properties, (klass.properties.map do |type, name|
100
+ [ type, properties[name] || properties[name.to_s] ]
101
+ end)
102
+ buf.rewind
103
+ buf
104
+ end
105
+
106
+ def to_s
107
+ to_binary.to_s
108
+ end
109
+
110
+ def to_frame channel = 0
111
+ Transport09::Header.new(self, channel)
112
+ end
113
+
114
+ def == header
115
+ [ :klass, :size, :weight, :properties ].inject(true) do |eql, field|
116
+ eql and __send__(field) == header.__send__(field)
117
+ end
118
+ end
119
+
120
+ def method_missing meth, *args, &blk
121
+ @properties.has_key?(meth) || @klass.properties.find{|_,name| name == meth } ? @properties[meth] :
122
+ super
123
+ end
124
+ end
125
+
126
+ def self.parse buf
127
+ buf = Transport09::Buffer.new(buf) unless buf.is_a? Transport09::Buffer
128
+ class_id, method_id = buf.read(:short, :short)
129
+ classes[class_id].methods[method_id].new(buf)
130
+ end
131
+
132
+ end
133
+ end
@@ -0,0 +1,823 @@
1
+
2
+ #:stopdoc:
3
+ # this file was autogenerated on Fri May 15 10:11:23 +0100 2009
4
+ # using amqp-0.8.xml (mtime: Wed May 06 14:48:51 +0100 2009)
5
+ #
6
+ # DO NOT EDIT! (edit ext/qparser.rb and config.yml instead, and run 'ruby qparser.rb')
7
+
8
+ module Qrack
9
+ module Protocol
10
+ HEADER = "AMQP".freeze
11
+ VERSION_MAJOR = 8
12
+ VERSION_MINOR = 0
13
+ REVISION = 0
14
+ PORT = 5672
15
+ SSL_PORT = 5671
16
+
17
+ RESPONSES = {
18
+ 200 => :REPLY_SUCCESS,
19
+ 310 => :NOT_DELIVERED,
20
+ 311 => :CONTENT_TOO_LARGE,
21
+ 320 => :CONNECTION_FORCED,
22
+ 402 => :INVALID_PATH,
23
+ 403 => :ACCESS_REFUSED,
24
+ 404 => :NOT_FOUND,
25
+ 405 => :RESOURCE_LOCKED,
26
+ 502 => :SYNTAX_ERROR,
27
+ 503 => :COMMAND_INVALID,
28
+ 504 => :CHANNEL_ERROR,
29
+ 506 => :RESOURCE_ERROR,
30
+ 530 => :NOT_ALLOWED,
31
+ 540 => :NOT_IMPLEMENTED,
32
+ 541 => :INTERNAL_ERROR,
33
+ }
34
+
35
+ FIELDS = [
36
+ :bit,
37
+ :long,
38
+ :longlong,
39
+ :longstr,
40
+ :octet,
41
+ :short,
42
+ :shortstr,
43
+ :table,
44
+ :timestamp,
45
+ ]
46
+
47
+ class Class
48
+ class << self
49
+ FIELDS.each do |f|
50
+ class_eval %[
51
+ def #{f} name
52
+ properties << [ :#{f}, name ] unless properties.include?([:#{f}, name])
53
+ attr_accessor name
54
+ end
55
+ ]
56
+ end
57
+
58
+ def properties() @properties ||= [] end
59
+
60
+ def id() self::ID end
61
+ def name() self::NAME end
62
+ end
63
+
64
+ class Method
65
+ class << self
66
+ FIELDS.each do |f|
67
+ class_eval %[
68
+ def #{f} name
69
+ arguments << [ :#{f}, name ] unless arguments.include?([:#{f}, name])
70
+ attr_accessor name
71
+ end
72
+ ]
73
+ end
74
+
75
+ def arguments() @arguments ||= [] end
76
+
77
+ def parent() Protocol.const_get(self.to_s[/Protocol::(.+?)::/,1]) end
78
+ def id() self::ID end
79
+ def name() self::NAME end
80
+ end
81
+
82
+ def == b
83
+ self.class.arguments.inject(true) do |eql, (type, name)|
84
+ eql and __send__("#{name}") == b.__send__("#{name}")
85
+ end
86
+ end
87
+ end
88
+
89
+ def self.methods() @methods ||= {} end
90
+
91
+ def self.Method(id, name)
92
+ @_base_methods ||= {}
93
+ @_base_methods[id] ||= ::Class.new(Method) do
94
+ class_eval %[
95
+ def self.inherited klass
96
+ klass.const_set(:ID, #{id})
97
+ klass.const_set(:NAME, :#{name.to_s})
98
+ klass.parent.methods[#{id}] = klass
99
+ klass.parent.methods[klass::NAME] = klass
100
+ end
101
+ ]
102
+ end
103
+ end
104
+ end
105
+
106
+ def self.classes() @classes ||= {} end
107
+
108
+ def self.Class(id, name)
109
+ @_base_classes ||= {}
110
+ @_base_classes[id] ||= ::Class.new(Class) do
111
+ class_eval %[
112
+ def self.inherited klass
113
+ klass.const_set(:ID, #{id})
114
+ klass.const_set(:NAME, :#{name.to_s})
115
+ Protocol.classes[#{id}] = klass
116
+ Protocol.classes[klass::NAME] = klass
117
+ end
118
+ ]
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ module Qrack
125
+ module Protocol
126
+ class Connection < Class( 10, :connection ); end
127
+ class Channel < Class( 20, :channel ); end
128
+ class Access < Class( 30, :access ); end
129
+ class Exchange < Class( 40, :exchange ); end
130
+ class Queue < Class( 50, :queue ); end
131
+ class Basic < Class( 60, :basic ); end
132
+ class File < Class( 70, :file ); end
133
+ class Stream < Class( 80, :stream ); end
134
+ class Tx < Class( 90, :tx ); end
135
+ class Dtx < Class( 100, :dtx ); end
136
+ class Tunnel < Class( 110, :tunnel ); end
137
+ class Test < Class( 120, :test ); end
138
+
139
+ class Connection
140
+
141
+ class Start < Method( 10, :start ); end
142
+ class StartOk < Method( 11, :start_ok ); end
143
+ class Secure < Method( 20, :secure ); end
144
+ class SecureOk < Method( 21, :secure_ok ); end
145
+ class Tune < Method( 30, :tune ); end
146
+ class TuneOk < Method( 31, :tune_ok ); end
147
+ class Open < Method( 40, :open ); end
148
+ class OpenOk < Method( 41, :open_ok ); end
149
+ class Redirect < Method( 50, :redirect ); end
150
+ class Close < Method( 60, :close ); end
151
+ class CloseOk < Method( 61, :close_ok ); end
152
+
153
+
154
+ class Start
155
+ octet :version_major
156
+ octet :version_minor
157
+ table :server_properties
158
+ longstr :mechanisms
159
+ longstr :locales
160
+ end
161
+
162
+ class StartOk
163
+ table :client_properties
164
+ shortstr :mechanism
165
+ longstr :response
166
+ shortstr :locale
167
+ end
168
+
169
+ class Secure
170
+ longstr :challenge
171
+ end
172
+
173
+ class SecureOk
174
+ longstr :response
175
+ end
176
+
177
+ class Tune
178
+ short :channel_max
179
+ long :frame_max
180
+ short :heartbeat
181
+ end
182
+
183
+ class TuneOk
184
+ short :channel_max
185
+ long :frame_max
186
+ short :heartbeat
187
+ end
188
+
189
+ class Open
190
+ shortstr :virtual_host
191
+ shortstr :capabilities
192
+ bit :insist
193
+ end
194
+
195
+ class OpenOk
196
+ shortstr :known_hosts
197
+ end
198
+
199
+ class Redirect
200
+ shortstr :host
201
+ shortstr :known_hosts
202
+ end
203
+
204
+ class Close
205
+ short :reply_code
206
+ shortstr :reply_text
207
+ short :class_id
208
+ short :method_id
209
+ end
210
+
211
+ class CloseOk
212
+ end
213
+
214
+ end
215
+
216
+ class Channel
217
+
218
+ class Open < Method( 10, :open ); end
219
+ class OpenOk < Method( 11, :open_ok ); end
220
+ class Flow < Method( 20, :flow ); end
221
+ class FlowOk < Method( 21, :flow_ok ); end
222
+ class Alert < Method( 30, :alert ); end
223
+ class Close < Method( 40, :close ); end
224
+ class CloseOk < Method( 41, :close_ok ); end
225
+
226
+
227
+ class Open
228
+ shortstr :out_of_band
229
+ end
230
+
231
+ class OpenOk
232
+ end
233
+
234
+ class Flow
235
+ bit :active
236
+ end
237
+
238
+ class FlowOk
239
+ bit :active
240
+ end
241
+
242
+ class Alert
243
+ short :reply_code
244
+ shortstr :reply_text
245
+ table :details
246
+ end
247
+
248
+ class Close
249
+ short :reply_code
250
+ shortstr :reply_text
251
+ short :class_id
252
+ short :method_id
253
+ end
254
+
255
+ class CloseOk
256
+ end
257
+
258
+ end
259
+
260
+ class Access
261
+
262
+ class Request < Method( 10, :request ); end
263
+ class RequestOk < Method( 11, :request_ok ); end
264
+
265
+
266
+ class Request
267
+ shortstr :realm
268
+ bit :exclusive
269
+ bit :passive
270
+ bit :active
271
+ bit :write
272
+ bit :read
273
+ end
274
+
275
+ class RequestOk
276
+ short :ticket
277
+ end
278
+
279
+ end
280
+
281
+ class Exchange
282
+
283
+ class Declare < Method( 10, :declare ); end
284
+ class DeclareOk < Method( 11, :declare_ok ); end
285
+ class Delete < Method( 20, :delete ); end
286
+ class DeleteOk < Method( 21, :delete_ok ); end
287
+
288
+
289
+ class Declare
290
+ short :ticket
291
+ shortstr :exchange
292
+ shortstr :type
293
+ bit :passive
294
+ bit :durable
295
+ bit :auto_delete
296
+ bit :internal
297
+ bit :nowait
298
+ table :arguments
299
+ end
300
+
301
+ class DeclareOk
302
+ end
303
+
304
+ class Delete
305
+ short :ticket
306
+ shortstr :exchange
307
+ bit :if_unused
308
+ bit :nowait
309
+ end
310
+
311
+ class DeleteOk
312
+ end
313
+
314
+ end
315
+
316
+ class Queue
317
+
318
+ class Declare < Method( 10, :declare ); end
319
+ class DeclareOk < Method( 11, :declare_ok ); end
320
+ class Bind < Method( 20, :bind ); end
321
+ class BindOk < Method( 21, :bind_ok ); end
322
+ class Purge < Method( 30, :purge ); end
323
+ class PurgeOk < Method( 31, :purge_ok ); end
324
+ class Delete < Method( 40, :delete ); end
325
+ class DeleteOk < Method( 41, :delete_ok ); end
326
+ class Unbind < Method( 50, :unbind ); end
327
+ class UnbindOk < Method( 51, :unbind_ok ); end
328
+
329
+
330
+ class Declare
331
+ short :ticket
332
+ shortstr :queue
333
+ bit :passive
334
+ bit :durable
335
+ bit :exclusive
336
+ bit :auto_delete
337
+ bit :nowait
338
+ table :arguments
339
+ end
340
+
341
+ class DeclareOk
342
+ shortstr :queue
343
+ long :message_count
344
+ long :consumer_count
345
+ end
346
+
347
+ class Bind
348
+ short :ticket
349
+ shortstr :queue
350
+ shortstr :exchange
351
+ shortstr :routing_key
352
+ bit :nowait
353
+ table :arguments
354
+ end
355
+
356
+ class BindOk
357
+ end
358
+
359
+ class Purge
360
+ short :ticket
361
+ shortstr :queue
362
+ bit :nowait
363
+ end
364
+
365
+ class PurgeOk
366
+ long :message_count
367
+ end
368
+
369
+ class Delete
370
+ short :ticket
371
+ shortstr :queue
372
+ bit :if_unused
373
+ bit :if_empty
374
+ bit :nowait
375
+ end
376
+
377
+ class DeleteOk
378
+ long :message_count
379
+ end
380
+
381
+ class Unbind
382
+ short :ticket
383
+ shortstr :queue
384
+ shortstr :exchange
385
+ shortstr :routing_key
386
+ table :arguments
387
+ end
388
+
389
+ class UnbindOk
390
+ end
391
+
392
+ end
393
+
394
+ class Basic
395
+ shortstr :content_type
396
+ shortstr :content_encoding
397
+ table :headers
398
+ octet :delivery_mode
399
+ octet :priority
400
+ shortstr :correlation_id
401
+ shortstr :reply_to
402
+ shortstr :expiration
403
+ shortstr :message_id
404
+ timestamp :timestamp
405
+ shortstr :type
406
+ shortstr :user_id
407
+ shortstr :app_id
408
+ shortstr :cluster_id
409
+
410
+ class Qos < Method( 10, :qos ); end
411
+ class QosOk < Method( 11, :qos_ok ); end
412
+ class Consume < Method( 20, :consume ); end
413
+ class ConsumeOk < Method( 21, :consume_ok ); end
414
+ class Cancel < Method( 30, :cancel ); end
415
+ class CancelOk < Method( 31, :cancel_ok ); end
416
+ class Publish < Method( 40, :publish ); end
417
+ class Return < Method( 50, :return ); end
418
+ class Deliver < Method( 60, :deliver ); end
419
+ class Get < Method( 70, :get ); end
420
+ class GetOk < Method( 71, :get_ok ); end
421
+ class GetEmpty < Method( 72, :get_empty ); end
422
+ class Ack < Method( 80, :ack ); end
423
+ class Reject < Method( 90, :reject ); end
424
+ class Recover < Method( 100, :recover ); end
425
+
426
+
427
+ class Qos
428
+ long :prefetch_size
429
+ short :prefetch_count
430
+ bit :global
431
+ end
432
+
433
+ class QosOk
434
+ end
435
+
436
+ class Consume
437
+ short :ticket
438
+ shortstr :queue
439
+ shortstr :consumer_tag
440
+ bit :no_local
441
+ bit :no_ack
442
+ bit :exclusive
443
+ bit :nowait
444
+ end
445
+
446
+ class ConsumeOk
447
+ shortstr :consumer_tag
448
+ end
449
+
450
+ class Cancel
451
+ shortstr :consumer_tag
452
+ bit :nowait
453
+ end
454
+
455
+ class CancelOk
456
+ shortstr :consumer_tag
457
+ end
458
+
459
+ class Publish
460
+ short :ticket
461
+ shortstr :exchange
462
+ shortstr :routing_key
463
+ bit :mandatory
464
+ bit :immediate
465
+ end
466
+
467
+ class Return
468
+ short :reply_code
469
+ shortstr :reply_text
470
+ shortstr :exchange
471
+ shortstr :routing_key
472
+ end
473
+
474
+ class Deliver
475
+ shortstr :consumer_tag
476
+ longlong :delivery_tag
477
+ bit :redelivered
478
+ shortstr :exchange
479
+ shortstr :routing_key
480
+ end
481
+
482
+ class Get
483
+ short :ticket
484
+ shortstr :queue
485
+ bit :no_ack
486
+ end
487
+
488
+ class GetOk
489
+ longlong :delivery_tag
490
+ bit :redelivered
491
+ shortstr :exchange
492
+ shortstr :routing_key
493
+ long :message_count
494
+ end
495
+
496
+ class GetEmpty
497
+ shortstr :cluster_id
498
+ end
499
+
500
+ class Ack
501
+ longlong :delivery_tag
502
+ bit :multiple
503
+ end
504
+
505
+ class Reject
506
+ longlong :delivery_tag
507
+ bit :requeue
508
+ end
509
+
510
+ class Recover
511
+ bit :requeue
512
+ end
513
+
514
+ end
515
+
516
+ class File
517
+ shortstr :content_type
518
+ shortstr :content_encoding
519
+ table :headers
520
+ octet :priority
521
+ shortstr :reply_to
522
+ shortstr :message_id
523
+ shortstr :filename
524
+ timestamp :timestamp
525
+ shortstr :cluster_id
526
+
527
+ class Qos < Method( 10, :qos ); end
528
+ class QosOk < Method( 11, :qos_ok ); end
529
+ class Consume < Method( 20, :consume ); end
530
+ class ConsumeOk < Method( 21, :consume_ok ); end
531
+ class Cancel < Method( 30, :cancel ); end
532
+ class CancelOk < Method( 31, :cancel_ok ); end
533
+ class Open < Method( 40, :open ); end
534
+ class OpenOk < Method( 41, :open_ok ); end
535
+ class Stage < Method( 50, :stage ); end
536
+ class Publish < Method( 60, :publish ); end
537
+ class Return < Method( 70, :return ); end
538
+ class Deliver < Method( 80, :deliver ); end
539
+ class Ack < Method( 90, :ack ); end
540
+ class Reject < Method( 100, :reject ); end
541
+
542
+
543
+ class Qos
544
+ long :prefetch_size
545
+ short :prefetch_count
546
+ bit :global
547
+ end
548
+
549
+ class QosOk
550
+ end
551
+
552
+ class Consume
553
+ short :ticket
554
+ shortstr :queue
555
+ shortstr :consumer_tag
556
+ bit :no_local
557
+ bit :no_ack
558
+ bit :exclusive
559
+ bit :nowait
560
+ end
561
+
562
+ class ConsumeOk
563
+ shortstr :consumer_tag
564
+ end
565
+
566
+ class Cancel
567
+ shortstr :consumer_tag
568
+ bit :nowait
569
+ end
570
+
571
+ class CancelOk
572
+ shortstr :consumer_tag
573
+ end
574
+
575
+ class Open
576
+ shortstr :identifier
577
+ longlong :content_size
578
+ end
579
+
580
+ class OpenOk
581
+ longlong :staged_size
582
+ end
583
+
584
+ class Stage
585
+ end
586
+
587
+ class Publish
588
+ short :ticket
589
+ shortstr :exchange
590
+ shortstr :routing_key
591
+ bit :mandatory
592
+ bit :immediate
593
+ shortstr :identifier
594
+ end
595
+
596
+ class Return
597
+ short :reply_code
598
+ shortstr :reply_text
599
+ shortstr :exchange
600
+ shortstr :routing_key
601
+ end
602
+
603
+ class Deliver
604
+ shortstr :consumer_tag
605
+ longlong :delivery_tag
606
+ bit :redelivered
607
+ shortstr :exchange
608
+ shortstr :routing_key
609
+ shortstr :identifier
610
+ end
611
+
612
+ class Ack
613
+ longlong :delivery_tag
614
+ bit :multiple
615
+ end
616
+
617
+ class Reject
618
+ longlong :delivery_tag
619
+ bit :requeue
620
+ end
621
+
622
+ end
623
+
624
+ class Stream
625
+ shortstr :content_type
626
+ shortstr :content_encoding
627
+ table :headers
628
+ octet :priority
629
+ timestamp :timestamp
630
+
631
+ class Qos < Method( 10, :qos ); end
632
+ class QosOk < Method( 11, :qos_ok ); end
633
+ class Consume < Method( 20, :consume ); end
634
+ class ConsumeOk < Method( 21, :consume_ok ); end
635
+ class Cancel < Method( 30, :cancel ); end
636
+ class CancelOk < Method( 31, :cancel_ok ); end
637
+ class Publish < Method( 40, :publish ); end
638
+ class Return < Method( 50, :return ); end
639
+ class Deliver < Method( 60, :deliver ); end
640
+
641
+
642
+ class Qos
643
+ long :prefetch_size
644
+ short :prefetch_count
645
+ long :consume_rate
646
+ bit :global
647
+ end
648
+
649
+ class QosOk
650
+ end
651
+
652
+ class Consume
653
+ short :ticket
654
+ shortstr :queue
655
+ shortstr :consumer_tag
656
+ bit :no_local
657
+ bit :exclusive
658
+ bit :nowait
659
+ end
660
+
661
+ class ConsumeOk
662
+ shortstr :consumer_tag
663
+ end
664
+
665
+ class Cancel
666
+ shortstr :consumer_tag
667
+ bit :nowait
668
+ end
669
+
670
+ class CancelOk
671
+ shortstr :consumer_tag
672
+ end
673
+
674
+ class Publish
675
+ short :ticket
676
+ shortstr :exchange
677
+ shortstr :routing_key
678
+ bit :mandatory
679
+ bit :immediate
680
+ end
681
+
682
+ class Return
683
+ short :reply_code
684
+ shortstr :reply_text
685
+ shortstr :exchange
686
+ shortstr :routing_key
687
+ end
688
+
689
+ class Deliver
690
+ shortstr :consumer_tag
691
+ longlong :delivery_tag
692
+ shortstr :exchange
693
+ shortstr :queue
694
+ end
695
+
696
+ end
697
+
698
+ class Tx
699
+
700
+ class Select < Method( 10, :select ); end
701
+ class SelectOk < Method( 11, :select_ok ); end
702
+ class Commit < Method( 20, :commit ); end
703
+ class CommitOk < Method( 21, :commit_ok ); end
704
+ class Rollback < Method( 30, :rollback ); end
705
+ class RollbackOk < Method( 31, :rollback_ok ); end
706
+
707
+
708
+ class Select
709
+ end
710
+
711
+ class SelectOk
712
+ end
713
+
714
+ class Commit
715
+ end
716
+
717
+ class CommitOk
718
+ end
719
+
720
+ class Rollback
721
+ end
722
+
723
+ class RollbackOk
724
+ end
725
+
726
+ end
727
+
728
+ class Dtx
729
+
730
+ class Select < Method( 10, :select ); end
731
+ class SelectOk < Method( 11, :select_ok ); end
732
+ class Start < Method( 20, :start ); end
733
+ class StartOk < Method( 21, :start_ok ); end
734
+
735
+
736
+ class Select
737
+ end
738
+
739
+ class SelectOk
740
+ end
741
+
742
+ class Start
743
+ shortstr :dtx_identifier
744
+ end
745
+
746
+ class StartOk
747
+ end
748
+
749
+ end
750
+
751
+ class Tunnel
752
+ table :headers
753
+ shortstr :proxy_name
754
+ shortstr :data_name
755
+ octet :durable
756
+ octet :broadcast
757
+
758
+ class Request < Method( 10, :request ); end
759
+
760
+
761
+ class Request
762
+ table :meta_data
763
+ end
764
+
765
+ end
766
+
767
+ class Test
768
+
769
+ class Integer < Method( 10, :integer ); end
770
+ class IntegerOk < Method( 11, :integer_ok ); end
771
+ class String < Method( 20, :string ); end
772
+ class StringOk < Method( 21, :string_ok ); end
773
+ class Table < Method( 30, :table ); end
774
+ class TableOk < Method( 31, :table_ok ); end
775
+ class Content < Method( 40, :content ); end
776
+ class ContentOk < Method( 41, :content_ok ); end
777
+
778
+
779
+ class Integer
780
+ octet :integer_1
781
+ short :integer_2
782
+ long :integer_3
783
+ longlong :integer_4
784
+ octet :operation
785
+ end
786
+
787
+ class IntegerOk
788
+ longlong :result
789
+ end
790
+
791
+ class String
792
+ shortstr :string_1
793
+ longstr :string_2
794
+ octet :operation
795
+ end
796
+
797
+ class StringOk
798
+ longstr :result
799
+ end
800
+
801
+ class Table
802
+ table :table
803
+ octet :integer_op
804
+ octet :string_op
805
+ end
806
+
807
+ class TableOk
808
+ longlong :integer_result
809
+ longstr :string_result
810
+ end
811
+
812
+ class Content
813
+ end
814
+
815
+ class ContentOk
816
+ long :content_checksum
817
+ end
818
+
819
+ end
820
+
821
+ end
822
+
823
+ end