totty-amqp 0.6.7.1.totty

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/README +143 -0
  2. data/Rakefile +20 -0
  3. data/amqp.todo +32 -0
  4. data/doc/EXAMPLE_01_PINGPONG +2 -0
  5. data/doc/EXAMPLE_02_CLOCK +2 -0
  6. data/doc/EXAMPLE_03_STOCKS +2 -0
  7. data/doc/EXAMPLE_04_MULTICLOCK +2 -0
  8. data/doc/EXAMPLE_05_ACK +2 -0
  9. data/doc/EXAMPLE_05_POP +2 -0
  10. data/doc/EXAMPLE_06_HASHTABLE +2 -0
  11. data/examples/amqp/simple.rb +79 -0
  12. data/examples/mq/ack.rb +45 -0
  13. data/examples/mq/clock.rb +56 -0
  14. data/examples/mq/hashtable.rb +52 -0
  15. data/examples/mq/internal.rb +49 -0
  16. data/examples/mq/logger.rb +88 -0
  17. data/examples/mq/multiclock.rb +49 -0
  18. data/examples/mq/pingpong.rb +45 -0
  19. data/examples/mq/pop.rb +43 -0
  20. data/examples/mq/primes-simple.rb +19 -0
  21. data/examples/mq/primes.rb +99 -0
  22. data/examples/mq/stocks.rb +58 -0
  23. data/lib/amqp/buffer.rb +395 -0
  24. data/lib/amqp/client.rb +210 -0
  25. data/lib/amqp/frame.rb +124 -0
  26. data/lib/amqp/protocol.rb +212 -0
  27. data/lib/amqp/server.rb +99 -0
  28. data/lib/amqp/spec.rb +832 -0
  29. data/lib/amqp/version.rb +3 -0
  30. data/lib/amqp.rb +152 -0
  31. data/lib/ext/blankslate.rb +7 -0
  32. data/lib/ext/em.rb +8 -0
  33. data/lib/ext/emfork.rb +69 -0
  34. data/lib/mq/exchange.rb +314 -0
  35. data/lib/mq/header.rb +33 -0
  36. data/lib/mq/logger.rb +89 -0
  37. data/lib/mq/queue.rb +455 -0
  38. data/lib/mq/rpc.rb +100 -0
  39. data/lib/mq.rb +877 -0
  40. data/old/README +30 -0
  41. data/old/Rakefile +12 -0
  42. data/old/amqp-0.8.json +606 -0
  43. data/old/amqp_spec.rb +796 -0
  44. data/old/amqpc.rb +695 -0
  45. data/old/codegen.rb +148 -0
  46. data/protocol/amqp-0.8.json +617 -0
  47. data/protocol/amqp-0.8.xml +3908 -0
  48. data/protocol/codegen.rb +173 -0
  49. data/protocol/doc.txt +281 -0
  50. data/research/api.rb +88 -0
  51. data/research/primes-forked.rb +63 -0
  52. data/research/primes-processes.rb +135 -0
  53. data/research/primes-threaded.rb +49 -0
  54. data/totty-amqp.gemspec +87 -0
  55. metadata +142 -0
data/lib/amqp/spec.rb ADDED
@@ -0,0 +1,832 @@
1
+
2
+ #:stopdoc:
3
+ # this file was autogenerated on Thu Jul 09 15:17:33 -0700 2009
4
+ # using amqp-0.8.json (mtime: Sat Jan 03 08:58:13 -0600 2009)
5
+ #
6
+ # DO NOT EDIT! (edit protocol/codegen.rb instead, and run `rake codegen`)
7
+
8
+ module AMQP
9
+ HEADER = "AMQP".freeze
10
+ VERSION_MAJOR = 8
11
+ VERSION_MINOR = 0
12
+ PORT = 5672
13
+
14
+ class Frame
15
+ def self.types
16
+ @types ||= {}
17
+ end
18
+
19
+ def self.Frame id
20
+ (@_base_frames ||= {})[id] ||= Class.new(Frame) do
21
+ class_eval %[
22
+ def self.inherited klass
23
+ klass.const_set(:ID, #{id})
24
+ Frame.types[#{id}] = klass
25
+ end
26
+ ]
27
+ end
28
+ end
29
+
30
+ class Method < Frame( 1 ); end
31
+ class Header < Frame( 2 ); end
32
+ class Body < Frame( 3 ); end
33
+ class OobMethod < Frame( 4 ); end
34
+ class OobHeader < Frame( 5 ); end
35
+ class OobBody < Frame( 6 ); end
36
+ class Trace < Frame( 7 ); end
37
+ class Heartbeat < Frame( 8 ); end
38
+
39
+ FOOTER = 206
40
+ end
41
+
42
+ RESPONSES = {
43
+ 200 => :REPLY_SUCCESS,
44
+ 310 => :NOT_DELIVERED,
45
+ 311 => :CONTENT_TOO_LARGE,
46
+ 312 => :NO_ROUTE,
47
+ 313 => :NO_CONSUMERS,
48
+ 403 => :ACCESS_REFUSED,
49
+ 404 => :NOT_FOUND,
50
+ 405 => :RESOURCE_LOCKED,
51
+ 406 => :PRECONDITION_FAILED,
52
+ 320 => :CONNECTION_FORCED,
53
+ 402 => :INVALID_PATH,
54
+ }
55
+
56
+ FIELDS = [
57
+ :bit,
58
+ :long,
59
+ :longlong,
60
+ :longstr,
61
+ :octet,
62
+ :short,
63
+ :shortstr,
64
+ :table,
65
+ :timestamp,
66
+ ]
67
+
68
+ module Protocol
69
+ class Class
70
+ class << self
71
+ FIELDS.each do |f|
72
+ class_eval %[
73
+ def #{f} name
74
+ properties << [ :#{f}, name ] unless properties.include?([:#{f}, name])
75
+ attr_accessor name
76
+ end
77
+ ]
78
+ end
79
+
80
+ def properties() @properties ||= [] end
81
+
82
+ def id() self::ID end
83
+ def name() self::NAME end
84
+ end
85
+
86
+ class Method
87
+ class << self
88
+ FIELDS.each do |f|
89
+ class_eval %[
90
+ def #{f} name
91
+ arguments << [ :#{f}, name ] unless arguments.include?([:#{f}, name])
92
+ attr_accessor name
93
+ end
94
+ ]
95
+ end
96
+
97
+ def arguments() @arguments ||= [] end
98
+
99
+ def section() Protocol.const_get(self.to_s[/Protocol::(.+?)::/,1]) end
100
+ def id() self::ID end
101
+ def name() self::NAME end
102
+ end
103
+
104
+ def == b
105
+ self.class.arguments.inject(true) do |eql, (type, name)|
106
+ eql and __send__("#{name}") == b.__send__("#{name}")
107
+ end
108
+ end
109
+ end
110
+
111
+ def self.methods() @methods ||= {} end
112
+
113
+ def self.Method(id, name)
114
+ @_base_methods ||= {}
115
+ @_base_methods[id] ||= ::Class.new(Method) do
116
+ class_eval %[
117
+ def self.inherited klass
118
+ klass.const_set(:ID, #{id})
119
+ klass.const_set(:NAME, :#{name.to_s})
120
+ klass.section.methods[#{id}] = klass
121
+ klass.section.methods[klass::NAME] = klass
122
+ end
123
+ ]
124
+ end
125
+ end
126
+ end
127
+
128
+ def self.classes() @classes ||= {} end
129
+
130
+ def self.Class(id, name)
131
+ @_base_classes ||= {}
132
+ @_base_classes[id] ||= ::Class.new(Class) do
133
+ class_eval %[
134
+ def self.inherited klass
135
+ klass.const_set(:ID, #{id})
136
+ klass.const_set(:NAME, :#{name.to_s})
137
+ Protocol.classes[#{id}] = klass
138
+ Protocol.classes[klass::NAME] = klass
139
+ end
140
+ ]
141
+ end
142
+ end
143
+ end
144
+ end
145
+
146
+ module AMQP
147
+ module Protocol
148
+ class Connection < Class( 10, :connection ); end
149
+ class Channel < Class( 20, :channel ); end
150
+ class Access < Class( 30, :access ); end
151
+ class Exchange < Class( 40, :exchange ); end
152
+ class Queue < Class( 50, :queue ); end
153
+ class Basic < Class( 60, :basic ); end
154
+ class File < Class( 70, :file ); end
155
+ class Stream < Class( 80, :stream ); end
156
+ class Tx < Class( 90, :tx ); end
157
+ class Dtx < Class( 100, :dtx ); end
158
+ class Tunnel < Class( 110, :tunnel ); end
159
+ class Test < Class( 120, :test ); end
160
+
161
+ class Connection
162
+
163
+ class Start < Method( 10, :start ); end
164
+ class StartOk < Method( 11, :start_ok ); end
165
+ class Secure < Method( 20, :secure ); end
166
+ class SecureOk < Method( 21, :secure_ok ); end
167
+ class Tune < Method( 30, :tune ); end
168
+ class TuneOk < Method( 31, :tune_ok ); end
169
+ class Open < Method( 40, :open ); end
170
+ class OpenOk < Method( 41, :open_ok ); end
171
+ class Redirect < Method( 50, :redirect ); end
172
+ class Close < Method( 60, :close ); end
173
+ class CloseOk < Method( 61, :close_ok ); end
174
+
175
+ class Start
176
+ octet :version_major
177
+ octet :version_minor
178
+ table :server_properties
179
+ longstr :mechanisms
180
+ longstr :locales
181
+ end
182
+
183
+ class StartOk
184
+ table :client_properties
185
+ shortstr :mechanism
186
+ longstr :response
187
+ shortstr :locale
188
+ end
189
+
190
+ class Secure
191
+ longstr :challenge
192
+ end
193
+
194
+ class SecureOk
195
+ longstr :response
196
+ end
197
+
198
+ class Tune
199
+ short :channel_max
200
+ long :frame_max
201
+ short :heartbeat
202
+ end
203
+
204
+ class TuneOk
205
+ short :channel_max
206
+ long :frame_max
207
+ short :heartbeat
208
+ end
209
+
210
+ class Open
211
+ shortstr :virtual_host
212
+ shortstr :capabilities
213
+ bit :insist
214
+ end
215
+
216
+ class OpenOk
217
+ shortstr :known_hosts
218
+ end
219
+
220
+ class Redirect
221
+ shortstr :host
222
+ shortstr :known_hosts
223
+ end
224
+
225
+ class Close
226
+ short :reply_code
227
+ shortstr :reply_text
228
+ short :class_id
229
+ short :method_id
230
+ end
231
+
232
+ class CloseOk
233
+ end
234
+
235
+ end
236
+
237
+ class Channel
238
+
239
+ class Open < Method( 10, :open ); end
240
+ class OpenOk < Method( 11, :open_ok ); end
241
+ class Flow < Method( 20, :flow ); end
242
+ class FlowOk < Method( 21, :flow_ok ); end
243
+ class Alert < Method( 30, :alert ); end
244
+ class Close < Method( 40, :close ); end
245
+ class CloseOk < Method( 41, :close_ok ); end
246
+
247
+ class Open
248
+ shortstr :out_of_band
249
+ end
250
+
251
+ class OpenOk
252
+ end
253
+
254
+ class Flow
255
+ bit :active
256
+ end
257
+
258
+ class FlowOk
259
+ bit :active
260
+ end
261
+
262
+ class Alert
263
+ short :reply_code
264
+ shortstr :reply_text
265
+ table :details
266
+ end
267
+
268
+ class Close
269
+ short :reply_code
270
+ shortstr :reply_text
271
+ short :class_id
272
+ short :method_id
273
+ end
274
+
275
+ class CloseOk
276
+ end
277
+
278
+ end
279
+
280
+ class Access
281
+
282
+ class Request < Method( 10, :request ); end
283
+ class RequestOk < Method( 11, :request_ok ); end
284
+
285
+ class Request
286
+ shortstr :realm
287
+ bit :exclusive
288
+ bit :passive
289
+ bit :active
290
+ bit :write
291
+ bit :read
292
+ end
293
+
294
+ class RequestOk
295
+ short :ticket
296
+ end
297
+
298
+ end
299
+
300
+ class Exchange
301
+
302
+ class Declare < Method( 10, :declare ); end
303
+ class DeclareOk < Method( 11, :declare_ok ); end
304
+ class Delete < Method( 20, :delete ); end
305
+ class DeleteOk < Method( 21, :delete_ok ); end
306
+
307
+ class Declare
308
+ short :ticket
309
+ shortstr :exchange
310
+ shortstr :type
311
+ bit :passive
312
+ bit :durable
313
+ bit :auto_delete
314
+ bit :internal
315
+ bit :nowait
316
+ table :arguments
317
+ end
318
+
319
+ class DeclareOk
320
+ end
321
+
322
+ class Delete
323
+ short :ticket
324
+ shortstr :exchange
325
+ bit :if_unused
326
+ bit :nowait
327
+ end
328
+
329
+ class DeleteOk
330
+ end
331
+
332
+ end
333
+
334
+ class Queue
335
+
336
+ class Declare < Method( 10, :declare ); end
337
+ class DeclareOk < Method( 11, :declare_ok ); end
338
+ class Bind < Method( 20, :bind ); end
339
+ class BindOk < Method( 21, :bind_ok ); end
340
+ class Purge < Method( 30, :purge ); end
341
+ class PurgeOk < Method( 31, :purge_ok ); end
342
+ class Delete < Method( 40, :delete ); end
343
+ class DeleteOk < Method( 41, :delete_ok ); end
344
+ class Unbind < Method( 50, :unbind ); end
345
+ class UnbindOk < Method( 51, :unbind_ok ); end
346
+
347
+ class Declare
348
+ short :ticket
349
+ shortstr :queue
350
+ bit :passive
351
+ bit :durable
352
+ bit :exclusive
353
+ bit :auto_delete
354
+ bit :nowait
355
+ table :arguments
356
+ end
357
+
358
+ class DeclareOk
359
+ shortstr :queue
360
+ long :message_count
361
+ long :consumer_count
362
+ end
363
+
364
+ class Bind
365
+ short :ticket
366
+ shortstr :queue
367
+ shortstr :exchange
368
+ shortstr :routing_key
369
+ bit :nowait
370
+ table :arguments
371
+ end
372
+
373
+ class BindOk
374
+ end
375
+
376
+ class Purge
377
+ short :ticket
378
+ shortstr :queue
379
+ bit :nowait
380
+ end
381
+
382
+ class PurgeOk
383
+ long :message_count
384
+ end
385
+
386
+ class Delete
387
+ short :ticket
388
+ shortstr :queue
389
+ bit :if_unused
390
+ bit :if_empty
391
+ bit :nowait
392
+ end
393
+
394
+ class DeleteOk
395
+ long :message_count
396
+ end
397
+
398
+ class Unbind
399
+ short :ticket
400
+ shortstr :queue
401
+ shortstr :exchange
402
+ shortstr :routing_key
403
+ table :arguments
404
+ end
405
+
406
+ class UnbindOk
407
+ end
408
+
409
+ end
410
+
411
+ class Basic
412
+ shortstr :content_type
413
+ shortstr :content_encoding
414
+ table :headers
415
+ octet :delivery_mode
416
+ octet :priority
417
+ shortstr :correlation_id
418
+ shortstr :reply_to
419
+ shortstr :expiration
420
+ shortstr :message_id
421
+ timestamp :timestamp
422
+ shortstr :type
423
+ shortstr :user_id
424
+ shortstr :app_id
425
+ shortstr :cluster_id
426
+
427
+ class Qos < Method( 10, :qos ); end
428
+ class QosOk < Method( 11, :qos_ok ); end
429
+ class Consume < Method( 20, :consume ); end
430
+ class ConsumeOk < Method( 21, :consume_ok ); end
431
+ class Cancel < Method( 30, :cancel ); end
432
+ class CancelOk < Method( 31, :cancel_ok ); end
433
+ class Publish < Method( 40, :publish ); end
434
+ class Return < Method( 50, :return ); end
435
+ class Deliver < Method( 60, :deliver ); end
436
+ class Get < Method( 70, :get ); end
437
+ class GetOk < Method( 71, :get_ok ); end
438
+ class GetEmpty < Method( 72, :get_empty ); end
439
+ class Ack < Method( 80, :ack ); end
440
+ class Reject < Method( 90, :reject ); end
441
+ class Recover < Method( 100, :recover ); end
442
+
443
+ class Qos
444
+ long :prefetch_size
445
+ short :prefetch_count
446
+ bit :global
447
+ end
448
+
449
+ class QosOk
450
+ end
451
+
452
+ class Consume
453
+ short :ticket
454
+ shortstr :queue
455
+ shortstr :consumer_tag
456
+ bit :no_local
457
+ bit :no_ack
458
+ bit :exclusive
459
+ bit :nowait
460
+ end
461
+
462
+ class ConsumeOk
463
+ shortstr :consumer_tag
464
+ end
465
+
466
+ class Cancel
467
+ shortstr :consumer_tag
468
+ bit :nowait
469
+ end
470
+
471
+ class CancelOk
472
+ shortstr :consumer_tag
473
+ end
474
+
475
+ class Publish
476
+ short :ticket
477
+ shortstr :exchange
478
+ shortstr :routing_key
479
+ bit :mandatory
480
+ bit :immediate
481
+ end
482
+
483
+ class Return
484
+ short :reply_code
485
+ shortstr :reply_text
486
+ shortstr :exchange
487
+ shortstr :routing_key
488
+ end
489
+
490
+ class Deliver
491
+ shortstr :consumer_tag
492
+ longlong :delivery_tag
493
+ bit :redelivered
494
+ shortstr :exchange
495
+ shortstr :routing_key
496
+ end
497
+
498
+ class Get
499
+ short :ticket
500
+ shortstr :queue
501
+ bit :no_ack
502
+ end
503
+
504
+ class GetOk
505
+ longlong :delivery_tag
506
+ bit :redelivered
507
+ shortstr :exchange
508
+ shortstr :routing_key
509
+ long :message_count
510
+ end
511
+
512
+ class GetEmpty
513
+ shortstr :cluster_id
514
+ end
515
+
516
+ class Ack
517
+ longlong :delivery_tag
518
+ bit :multiple
519
+ end
520
+
521
+ class Reject
522
+ longlong :delivery_tag
523
+ bit :requeue
524
+ end
525
+
526
+ class Recover
527
+ bit :requeue
528
+ end
529
+
530
+ end
531
+
532
+ class File
533
+ shortstr :content_type
534
+ shortstr :content_encoding
535
+ table :headers
536
+ octet :priority
537
+ shortstr :reply_to
538
+ shortstr :message_id
539
+ shortstr :filename
540
+ timestamp :timestamp
541
+ shortstr :cluster_id
542
+
543
+ class Qos < Method( 10, :qos ); end
544
+ class QosOk < Method( 11, :qos_ok ); end
545
+ class Consume < Method( 20, :consume ); end
546
+ class ConsumeOk < Method( 21, :consume_ok ); end
547
+ class Cancel < Method( 30, :cancel ); end
548
+ class CancelOk < Method( 31, :cancel_ok ); end
549
+ class Open < Method( 40, :open ); end
550
+ class OpenOk < Method( 41, :open_ok ); end
551
+ class Stage < Method( 50, :stage ); end
552
+ class Publish < Method( 60, :publish ); end
553
+ class Return < Method( 70, :return ); end
554
+ class Deliver < Method( 80, :deliver ); end
555
+ class Ack < Method( 90, :ack ); end
556
+ class Reject < Method( 100, :reject ); end
557
+
558
+ class Qos
559
+ long :prefetch_size
560
+ short :prefetch_count
561
+ bit :global
562
+ end
563
+
564
+ class QosOk
565
+ end
566
+
567
+ class Consume
568
+ short :ticket
569
+ shortstr :queue
570
+ shortstr :consumer_tag
571
+ bit :no_local
572
+ bit :no_ack
573
+ bit :exclusive
574
+ bit :nowait
575
+ end
576
+
577
+ class ConsumeOk
578
+ shortstr :consumer_tag
579
+ end
580
+
581
+ class Cancel
582
+ shortstr :consumer_tag
583
+ bit :nowait
584
+ end
585
+
586
+ class CancelOk
587
+ shortstr :consumer_tag
588
+ end
589
+
590
+ class Open
591
+ shortstr :identifier
592
+ longlong :content_size
593
+ end
594
+
595
+ class OpenOk
596
+ longlong :staged_size
597
+ end
598
+
599
+ class Stage
600
+ end
601
+
602
+ class Publish
603
+ short :ticket
604
+ shortstr :exchange
605
+ shortstr :routing_key
606
+ bit :mandatory
607
+ bit :immediate
608
+ shortstr :identifier
609
+ end
610
+
611
+ class Return
612
+ short :reply_code
613
+ shortstr :reply_text
614
+ shortstr :exchange
615
+ shortstr :routing_key
616
+ end
617
+
618
+ class Deliver
619
+ shortstr :consumer_tag
620
+ longlong :delivery_tag
621
+ bit :redelivered
622
+ shortstr :exchange
623
+ shortstr :routing_key
624
+ shortstr :identifier
625
+ end
626
+
627
+ class Ack
628
+ longlong :delivery_tag
629
+ bit :multiple
630
+ end
631
+
632
+ class Reject
633
+ longlong :delivery_tag
634
+ bit :requeue
635
+ end
636
+
637
+ end
638
+
639
+ class Stream
640
+ shortstr :content_type
641
+ shortstr :content_encoding
642
+ table :headers
643
+ octet :priority
644
+ timestamp :timestamp
645
+
646
+ class Qos < Method( 10, :qos ); end
647
+ class QosOk < Method( 11, :qos_ok ); end
648
+ class Consume < Method( 20, :consume ); end
649
+ class ConsumeOk < Method( 21, :consume_ok ); end
650
+ class Cancel < Method( 30, :cancel ); end
651
+ class CancelOk < Method( 31, :cancel_ok ); end
652
+ class Publish < Method( 40, :publish ); end
653
+ class Return < Method( 50, :return ); end
654
+ class Deliver < Method( 60, :deliver ); end
655
+
656
+ class Qos
657
+ long :prefetch_size
658
+ short :prefetch_count
659
+ long :consume_rate
660
+ bit :global
661
+ end
662
+
663
+ class QosOk
664
+ end
665
+
666
+ class Consume
667
+ short :ticket
668
+ shortstr :queue
669
+ shortstr :consumer_tag
670
+ bit :no_local
671
+ bit :exclusive
672
+ bit :nowait
673
+ end
674
+
675
+ class ConsumeOk
676
+ shortstr :consumer_tag
677
+ end
678
+
679
+ class Cancel
680
+ shortstr :consumer_tag
681
+ bit :nowait
682
+ end
683
+
684
+ class CancelOk
685
+ shortstr :consumer_tag
686
+ end
687
+
688
+ class Publish
689
+ short :ticket
690
+ shortstr :exchange
691
+ shortstr :routing_key
692
+ bit :mandatory
693
+ bit :immediate
694
+ end
695
+
696
+ class Return
697
+ short :reply_code
698
+ shortstr :reply_text
699
+ shortstr :exchange
700
+ shortstr :routing_key
701
+ end
702
+
703
+ class Deliver
704
+ shortstr :consumer_tag
705
+ longlong :delivery_tag
706
+ shortstr :exchange
707
+ shortstr :queue
708
+ end
709
+
710
+ end
711
+
712
+ class Tx
713
+
714
+ class Select < Method( 10, :select ); end
715
+ class SelectOk < Method( 11, :select_ok ); end
716
+ class Commit < Method( 20, :commit ); end
717
+ class CommitOk < Method( 21, :commit_ok ); end
718
+ class Rollback < Method( 30, :rollback ); end
719
+ class RollbackOk < Method( 31, :rollback_ok ); end
720
+
721
+ class Select
722
+ end
723
+
724
+ class SelectOk
725
+ end
726
+
727
+ class Commit
728
+ end
729
+
730
+ class CommitOk
731
+ end
732
+
733
+ class Rollback
734
+ end
735
+
736
+ class RollbackOk
737
+ end
738
+
739
+ end
740
+
741
+ class Dtx
742
+
743
+ class Select < Method( 10, :select ); end
744
+ class SelectOk < Method( 11, :select_ok ); end
745
+ class Start < Method( 20, :start ); end
746
+ class StartOk < Method( 21, :start_ok ); end
747
+
748
+ class Select
749
+ end
750
+
751
+ class SelectOk
752
+ end
753
+
754
+ class Start
755
+ shortstr :dtx_identifier
756
+ end
757
+
758
+ class StartOk
759
+ end
760
+
761
+ end
762
+
763
+ class Tunnel
764
+ table :headers
765
+ shortstr :proxy_name
766
+ shortstr :data_name
767
+ octet :durable
768
+ octet :broadcast
769
+
770
+ class Request < Method( 10, :request ); end
771
+
772
+ class Request
773
+ table :meta_data
774
+ end
775
+
776
+ end
777
+
778
+ class Test
779
+
780
+ class Integer < Method( 10, :integer ); end
781
+ class IntegerOk < Method( 11, :integer_ok ); end
782
+ class String < Method( 20, :string ); end
783
+ class StringOk < Method( 21, :string_ok ); end
784
+ class Table < Method( 30, :table ); end
785
+ class TableOk < Method( 31, :table_ok ); end
786
+ class Content < Method( 40, :content ); end
787
+ class ContentOk < Method( 41, :content_ok ); end
788
+
789
+ class Integer
790
+ octet :integer_1
791
+ short :integer_2
792
+ long :integer_3
793
+ longlong :integer_4
794
+ octet :operation
795
+ end
796
+
797
+ class IntegerOk
798
+ longlong :result
799
+ end
800
+
801
+ class String
802
+ shortstr :string_1
803
+ longstr :string_2
804
+ octet :operation
805
+ end
806
+
807
+ class StringOk
808
+ longstr :result
809
+ end
810
+
811
+ class Table
812
+ table :table
813
+ octet :integer_op
814
+ octet :string_op
815
+ end
816
+
817
+ class TableOk
818
+ longlong :integer_result
819
+ longstr :string_result
820
+ end
821
+
822
+ class Content
823
+ end
824
+
825
+ class ContentOk
826
+ long :content_checksum
827
+ end
828
+
829
+ end
830
+
831
+ end
832
+ end