amq-protocol 0.9.5 → 1.0.0.pre1
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.
- data/.travis.yml +1 -0
- data/LICENSE +0 -1
- data/amqp_0.9.1_changes.json +1 -1
- data/codegen_helpers.py +14 -6
- data/lib/amq/protocol/client.rb +319 -202
- data/lib/amq/protocol/table.rb +3 -7
- data/lib/amq/protocol/table_value_decoder.rb +35 -63
- data/lib/amq/protocol/version.rb +1 -1
- data/protocol.rb.pytemplate +2 -2
- data/spec/amq/protocol/exchange_spec.rb +4 -18
- data/spec/amq/protocol/method_spec.rb +2 -2
- metadata +15 -11
data/.travis.yml
CHANGED
data/LICENSE
CHANGED
data/amqp_0.9.1_changes.json
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"tx": {"select-ok": ["client"], "rollback": ["server"], "commit": ["server"], "rollback-ok": ["client"], "select": ["server"], "commit-ok": ["client"]}, "exchange": {"delete-ok": ["client"], "declare-ok": ["client"], "declare": ["server"], "delete": ["server"], "bind": ["server"], "bind-ok": ["client"], "unbind": ["server"], "unbind-ok": ["client"]}, "queue": {"unbind": ["server"], "unbind-ok": ["client"], "purge-ok": ["client"], "bind": ["server"], "purge": ["server"], "declare-ok": ["client"], "delete-ok": ["client"], "delete": ["server"], "declare": ["server"], "bind-ok": ["client"]}, "connection": {"secure": ["client"], "secure-ok": ["server"], "open-ok": ["client"], "close-ok": ["client", "server"], "start": ["client"], "tune": ["client"], "start-ok": ["server"], "close": ["client", "server"], "open": ["server"], "tune-ok": ["server"]}, "basic": {"qos": ["server"], "consume": ["server"], "reject": ["server"], "get": ["server"], "ack": ["client", "server"], "get-ok": ["client"], "consume-ok": ["client"], "deliver": ["client"], "recover-ok": ["client"], "publish": ["server"], "cancel": ["server"
|
1
|
+
{"tx": {"select-ok": ["client"], "rollback": ["server"], "commit": ["server"], "rollback-ok": ["client"], "select": ["server"], "commit-ok": ["client"]}, "exchange": {"delete-ok": ["client"], "declare-ok": ["client"], "declare": ["server"], "delete": ["server"], "bind": ["server"], "bind-ok": ["client"], "unbind": ["server"], "unbind-ok": ["client"]}, "queue": {"unbind": ["server"], "unbind-ok": ["client"], "purge-ok": ["client"], "bind": ["server"], "purge": ["server"], "declare-ok": ["client"], "delete-ok": ["client"], "delete": ["server"], "declare": ["server"], "bind-ok": ["client"]}, "connection": {"secure": ["client"], "secure-ok": ["server"], "open-ok": ["client"], "close-ok": ["client", "server"], "start": ["client"], "tune": ["client"], "start-ok": ["server"], "close": ["client", "server"], "open": ["server"], "tune-ok": ["server"]}, "basic": {"qos": ["server"], "consume": ["server"], "reject": ["server"], "get": ["server"], "ack": ["client", "server"], "get-ok": ["client"], "consume-ok": ["client"], "deliver": ["client"], "recover-ok": ["client"], "publish": ["server"], "cancel": ["server"], "recover-async": ["server"], "get-empty": ["client"], "qos-ok": ["client"], "return": ["client"], "recover": ["server"], "cancel-ok": ["client"]}, "channel": {"flow-ok": ["server", "client"], "flow": ["server", "client"], "open-ok": ["client"], "close-ok": ["client", "server"], "close": ["client", "server"], "open": ["server"]}}
|
data/codegen_helpers.py
CHANGED
@@ -4,11 +4,11 @@ def genSingleEncode(spec, cValue, unresolved_domain):
|
|
4
4
|
buffer = []
|
5
5
|
type = spec.resolveDomain(unresolved_domain)
|
6
6
|
if type == 'shortstr':
|
7
|
-
buffer.append("buffer << %s.
|
8
|
-
buffer.append("buffer << %s
|
7
|
+
buffer.append("buffer << %s.bytesize.chr" % (cValue,))
|
8
|
+
buffer.append("buffer << %s" % (cValue,))
|
9
9
|
elif type == 'longstr':
|
10
|
-
buffer.append("buffer << [%s.
|
11
|
-
buffer.append("buffer << %s
|
10
|
+
buffer.append("buffer << [%s.bytesize].pack(PACK_UINT32)" % (cValue,))
|
11
|
+
buffer.append("buffer << %s" % (cValue,))
|
12
12
|
elif type == 'octet':
|
13
13
|
buffer.append("buffer << [%s].pack(PACK_CHAR)" % (cValue,))
|
14
14
|
elif type == 'short':
|
@@ -87,9 +87,17 @@ def genSingleSimpleDecode(spec, field):
|
|
87
87
|
type = spec.resolveDomain(unresolved_domain)
|
88
88
|
buffer = []
|
89
89
|
if type == 'shortstr':
|
90
|
-
buffer.append("data.
|
90
|
+
# buffer.append("length = data.unpack(PACK_CHAR)[0]")
|
91
|
+
# buffer.append("result = data[offset..-1]")
|
92
|
+
# buffer.append("raise 'Bad size: #{length} expected, got #{result.bytesize}' if result.bytesize != length")
|
93
|
+
# buffer.append("result")
|
94
|
+
buffer.append("data")
|
91
95
|
elif type == 'longstr':
|
92
|
-
buffer.append("data.
|
96
|
+
# buffer.append("length = data.unpack(PACK_CHAR)[0]")
|
97
|
+
# buffer.append("result = data[offset..-1]")
|
98
|
+
# buffer.append("raise 'Bad size: #{length} expected, got #{result.bytesize}' if result.bytesize != length")
|
99
|
+
# buffer.append("result")
|
100
|
+
buffer.append("data")
|
93
101
|
elif type == 'octet':
|
94
102
|
buffer.append("data.unpack(PACK_CHAR).first")
|
95
103
|
elif type == 'short':
|
data/lib/amq/protocol/client.rb
CHANGED
@@ -17,17 +17,19 @@ module AMQ
|
|
17
17
|
# caching
|
18
18
|
EMPTY_STRING = "".freeze
|
19
19
|
|
20
|
-
PACK_CHAR =
|
21
|
-
PACK_UINT16 =
|
22
|
-
PACK_UINT16_X2 =
|
23
|
-
PACK_UINT32 =
|
24
|
-
PACK_UINT32_X2 =
|
25
|
-
PACK_INT64 =
|
26
|
-
PACK_UCHAR_UINT32 =
|
27
|
-
PACK_CHAR_UINT16_UINT32 =
|
28
|
-
|
29
|
-
PACK_32BIT_FLOAT =
|
30
|
-
PACK_64BIT_FLOAT =
|
20
|
+
PACK_CHAR = 'C'.freeze
|
21
|
+
PACK_UINT16 = 'n'.freeze
|
22
|
+
PACK_UINT16_X2 = 'n2'.freeze
|
23
|
+
PACK_UINT32 = 'N'.freeze
|
24
|
+
PACK_UINT32_X2 = 'N2'.freeze
|
25
|
+
PACK_INT64 = 'q'.freeze
|
26
|
+
PACK_UCHAR_UINT32 = 'CN'.freeze
|
27
|
+
PACK_CHAR_UINT16_UINT32 = 'cnN'.freeze
|
28
|
+
|
29
|
+
PACK_32BIT_FLOAT = 'f'.freeze
|
30
|
+
PACK_64BIT_FLOAT = 'd'.freeze
|
31
|
+
|
32
|
+
|
31
33
|
|
32
34
|
# @return [Array] Collection of subclasses of AMQ::Protocol::Class.
|
33
35
|
def self.classes
|
@@ -168,8 +170,9 @@ module AMQ
|
|
168
170
|
VALUE = 541
|
169
171
|
end
|
170
172
|
|
171
|
-
|
172
|
-
#
|
173
|
+
|
174
|
+
# We don't instantiate the following classes,
|
175
|
+
# as we don't actually need any per-instance state.
|
173
176
|
# Also, this is pretty low-level functionality,
|
174
177
|
# hence it should have a reasonable performance.
|
175
178
|
# As everyone knows, garbage collector in MRI performs
|
@@ -177,10 +180,10 @@ module AMQ
|
|
177
180
|
# not creating any objects, but only use class as
|
178
181
|
# a struct. Creating classes is quite expensive though,
|
179
182
|
# but here the inheritance comes handy and mainly
|
180
|
-
# as we can
|
181
|
-
# we can
|
183
|
+
# as we can't simply make a reference to a function,
|
184
|
+
# we can't use a hash or an object. I've been also
|
182
185
|
# considering to have just a bunch of methods, but
|
183
|
-
# here
|
186
|
+
# here's the problem, that after we'd require this file,
|
184
187
|
# all these methods would become global which would
|
185
188
|
# be a bad, bad thing to do.
|
186
189
|
class Class
|
@@ -277,6 +280,8 @@ module AMQ
|
|
277
280
|
@name = "connection"
|
278
281
|
@method_id = 10
|
279
282
|
|
283
|
+
|
284
|
+
|
280
285
|
class Start < Protocol::Method
|
281
286
|
@name = "connection.start"
|
282
287
|
@method_id = 10
|
@@ -316,6 +321,8 @@ module AMQ
|
|
316
321
|
def self.has_content?
|
317
322
|
false
|
318
323
|
end
|
324
|
+
|
325
|
+
|
319
326
|
end
|
320
327
|
|
321
328
|
class StartOk < Protocol::Method
|
@@ -324,25 +331,27 @@ module AMQ
|
|
324
331
|
@index = 0x000A000B # 10, 11, 655371
|
325
332
|
@packed_indexes = [10, 11].pack(PACK_UINT16_X2).freeze
|
326
333
|
|
334
|
+
|
327
335
|
def self.has_content?
|
328
336
|
false
|
329
337
|
end
|
330
338
|
|
331
339
|
# @return
|
332
|
-
# [
|
340
|
+
# [u'client_properties = nil', u"mechanism = u'PLAIN'", u'response = nil', u"locale = u'en_US'"]
|
333
341
|
def self.encode(client_properties, mechanism, response, locale)
|
334
342
|
channel = 0
|
335
|
-
buffer =
|
343
|
+
buffer = ''
|
336
344
|
buffer << @packed_indexes
|
337
345
|
buffer << AMQ::Protocol::Table.encode(client_properties)
|
338
|
-
buffer << mechanism.
|
339
|
-
buffer << mechanism
|
340
|
-
buffer << [response.
|
341
|
-
buffer << response
|
342
|
-
buffer << locale.
|
343
|
-
buffer << locale
|
346
|
+
buffer << mechanism.bytesize.chr
|
347
|
+
buffer << mechanism
|
348
|
+
buffer << [response.bytesize].pack(PACK_UINT32)
|
349
|
+
buffer << response
|
350
|
+
buffer << locale.bytesize.chr
|
351
|
+
buffer << locale
|
344
352
|
MethodFrame.new(buffer, channel)
|
345
353
|
end
|
354
|
+
|
346
355
|
end
|
347
356
|
|
348
357
|
class Secure < Protocol::Method
|
@@ -369,6 +378,8 @@ module AMQ
|
|
369
378
|
def self.has_content?
|
370
379
|
false
|
371
380
|
end
|
381
|
+
|
382
|
+
|
372
383
|
end
|
373
384
|
|
374
385
|
class SecureOk < Protocol::Method
|
@@ -377,20 +388,22 @@ module AMQ
|
|
377
388
|
@index = 0x000A0015 # 10, 21, 655381
|
378
389
|
@packed_indexes = [10, 21].pack(PACK_UINT16_X2).freeze
|
379
390
|
|
391
|
+
|
380
392
|
def self.has_content?
|
381
393
|
false
|
382
394
|
end
|
383
395
|
|
384
396
|
# @return
|
385
|
-
# [
|
397
|
+
# [u'response = nil']
|
386
398
|
def self.encode(response)
|
387
399
|
channel = 0
|
388
|
-
buffer =
|
400
|
+
buffer = ''
|
389
401
|
buffer << @packed_indexes
|
390
|
-
buffer << [response.
|
391
|
-
buffer << response
|
402
|
+
buffer << [response.bytesize].pack(PACK_UINT32)
|
403
|
+
buffer << response
|
392
404
|
MethodFrame.new(buffer, channel)
|
393
405
|
end
|
406
|
+
|
394
407
|
end
|
395
408
|
|
396
409
|
class Tune < Protocol::Method
|
@@ -421,6 +434,8 @@ module AMQ
|
|
421
434
|
def self.has_content?
|
422
435
|
false
|
423
436
|
end
|
437
|
+
|
438
|
+
|
424
439
|
end
|
425
440
|
|
426
441
|
class TuneOk < Protocol::Method
|
@@ -429,21 +444,23 @@ module AMQ
|
|
429
444
|
@index = 0x000A001F # 10, 31, 655391
|
430
445
|
@packed_indexes = [10, 31].pack(PACK_UINT16_X2).freeze
|
431
446
|
|
447
|
+
|
432
448
|
def self.has_content?
|
433
449
|
false
|
434
450
|
end
|
435
451
|
|
436
452
|
# @return
|
437
|
-
# [
|
453
|
+
# [u'channel_max = false', u'frame_max = false', u'heartbeat = false']
|
438
454
|
def self.encode(channel_max, frame_max, heartbeat)
|
439
455
|
channel = 0
|
440
|
-
buffer =
|
456
|
+
buffer = ''
|
441
457
|
buffer << @packed_indexes
|
442
458
|
buffer << [channel_max].pack(PACK_UINT16)
|
443
459
|
buffer << [frame_max].pack(PACK_UINT32)
|
444
460
|
buffer << [heartbeat].pack(PACK_UINT16)
|
445
461
|
MethodFrame.new(buffer, channel)
|
446
462
|
end
|
463
|
+
|
447
464
|
end
|
448
465
|
|
449
466
|
class Open < Protocol::Method
|
@@ -452,27 +469,29 @@ module AMQ
|
|
452
469
|
@index = 0x000A0028 # 10, 40, 655400
|
453
470
|
@packed_indexes = [10, 40].pack(PACK_UINT16_X2).freeze
|
454
471
|
|
472
|
+
|
455
473
|
def self.has_content?
|
456
474
|
false
|
457
475
|
end
|
458
476
|
|
459
477
|
# @return
|
460
|
-
# ["virtual_host =
|
478
|
+
# [u"virtual_host = u'/'", u'capabilities = EMPTY_STRING', u'insist = false']
|
461
479
|
def self.encode(virtual_host)
|
462
480
|
capabilities = EMPTY_STRING
|
463
481
|
insist = false
|
464
482
|
channel = 0
|
465
|
-
buffer =
|
483
|
+
buffer = ''
|
466
484
|
buffer << @packed_indexes
|
467
|
-
buffer << virtual_host.
|
468
|
-
buffer << virtual_host
|
469
|
-
buffer << capabilities.
|
470
|
-
buffer << capabilities
|
485
|
+
buffer << virtual_host.bytesize.chr
|
486
|
+
buffer << virtual_host
|
487
|
+
buffer << capabilities.bytesize.chr
|
488
|
+
buffer << capabilities
|
471
489
|
bit_buffer = 0
|
472
490
|
bit_buffer = bit_buffer | (1 << 0) if insist
|
473
491
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
474
492
|
MethodFrame.new(buffer, channel)
|
475
493
|
end
|
494
|
+
|
476
495
|
end
|
477
496
|
|
478
497
|
class OpenOk < Protocol::Method
|
@@ -499,6 +518,8 @@ module AMQ
|
|
499
518
|
def self.has_content?
|
500
519
|
false
|
501
520
|
end
|
521
|
+
|
522
|
+
|
502
523
|
end
|
503
524
|
|
504
525
|
class Close < Protocol::Method
|
@@ -536,18 +557,19 @@ module AMQ
|
|
536
557
|
end
|
537
558
|
|
538
559
|
# @return
|
539
|
-
# [
|
560
|
+
# [u'reply_code = nil', u'reply_text = EMPTY_STRING', u'class_id = nil', u'method_id = nil']
|
540
561
|
def self.encode(reply_code, reply_text, class_id, method_id)
|
541
562
|
channel = 0
|
542
|
-
buffer =
|
563
|
+
buffer = ''
|
543
564
|
buffer << @packed_indexes
|
544
565
|
buffer << [reply_code].pack(PACK_UINT16)
|
545
|
-
buffer << reply_text.
|
546
|
-
buffer << reply_text
|
566
|
+
buffer << reply_text.bytesize.chr
|
567
|
+
buffer << reply_text
|
547
568
|
buffer << [class_id].pack(PACK_UINT16)
|
548
569
|
buffer << [method_id].pack(PACK_UINT16)
|
549
570
|
MethodFrame.new(buffer, channel)
|
550
571
|
end
|
572
|
+
|
551
573
|
end
|
552
574
|
|
553
575
|
class CloseOk < Protocol::Method
|
@@ -573,36 +595,42 @@ module AMQ
|
|
573
595
|
# []
|
574
596
|
def self.encode()
|
575
597
|
channel = 0
|
576
|
-
buffer =
|
598
|
+
buffer = ''
|
577
599
|
buffer << @packed_indexes
|
578
600
|
MethodFrame.new(buffer, channel)
|
579
601
|
end
|
602
|
+
|
580
603
|
end
|
604
|
+
|
581
605
|
end
|
582
606
|
|
583
607
|
class Channel < Protocol::Class
|
584
608
|
@name = "channel"
|
585
609
|
@method_id = 20
|
586
610
|
|
611
|
+
|
612
|
+
|
587
613
|
class Open < Protocol::Method
|
588
614
|
@name = "channel.open"
|
589
615
|
@method_id = 10
|
590
616
|
@index = 0x0014000A # 20, 10, 1310730
|
591
617
|
@packed_indexes = [20, 10].pack(PACK_UINT16_X2).freeze
|
592
618
|
|
619
|
+
|
593
620
|
def self.has_content?
|
594
621
|
false
|
595
622
|
end
|
596
623
|
|
597
624
|
# @return
|
598
|
-
# [
|
625
|
+
# [u'out_of_band = EMPTY_STRING']
|
599
626
|
def self.encode(channel, out_of_band)
|
600
|
-
buffer =
|
627
|
+
buffer = ''
|
601
628
|
buffer << @packed_indexes
|
602
|
-
buffer << out_of_band.
|
603
|
-
buffer << out_of_band
|
629
|
+
buffer << out_of_band.bytesize.chr
|
630
|
+
buffer << out_of_band
|
604
631
|
MethodFrame.new(buffer, channel)
|
605
632
|
end
|
633
|
+
|
606
634
|
end
|
607
635
|
|
608
636
|
class OpenOk < Protocol::Method
|
@@ -629,6 +657,8 @@ module AMQ
|
|
629
657
|
def self.has_content?
|
630
658
|
false
|
631
659
|
end
|
660
|
+
|
661
|
+
|
632
662
|
end
|
633
663
|
|
634
664
|
class Flow < Protocol::Method
|
@@ -656,15 +686,16 @@ module AMQ
|
|
656
686
|
end
|
657
687
|
|
658
688
|
# @return
|
659
|
-
# [
|
689
|
+
# [u'active = nil']
|
660
690
|
def self.encode(channel, active)
|
661
|
-
buffer =
|
691
|
+
buffer = ''
|
662
692
|
buffer << @packed_indexes
|
663
693
|
bit_buffer = 0
|
664
694
|
bit_buffer = bit_buffer | (1 << 0) if active
|
665
695
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
666
696
|
MethodFrame.new(buffer, channel)
|
667
697
|
end
|
698
|
+
|
668
699
|
end
|
669
700
|
|
670
701
|
class FlowOk < Protocol::Method
|
@@ -692,15 +723,16 @@ module AMQ
|
|
692
723
|
end
|
693
724
|
|
694
725
|
# @return
|
695
|
-
# [
|
726
|
+
# [u'active = nil']
|
696
727
|
def self.encode(channel, active)
|
697
|
-
buffer =
|
728
|
+
buffer = ''
|
698
729
|
buffer << @packed_indexes
|
699
730
|
bit_buffer = 0
|
700
731
|
bit_buffer = bit_buffer | (1 << 0) if active
|
701
732
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
702
733
|
MethodFrame.new(buffer, channel)
|
703
734
|
end
|
735
|
+
|
704
736
|
end
|
705
737
|
|
706
738
|
class Close < Protocol::Method
|
@@ -738,17 +770,18 @@ module AMQ
|
|
738
770
|
end
|
739
771
|
|
740
772
|
# @return
|
741
|
-
# [
|
773
|
+
# [u'reply_code = nil', u'reply_text = EMPTY_STRING', u'class_id = nil', u'method_id = nil']
|
742
774
|
def self.encode(channel, reply_code, reply_text, class_id, method_id)
|
743
|
-
buffer =
|
775
|
+
buffer = ''
|
744
776
|
buffer << @packed_indexes
|
745
777
|
buffer << [reply_code].pack(PACK_UINT16)
|
746
|
-
buffer << reply_text.
|
747
|
-
buffer << reply_text
|
778
|
+
buffer << reply_text.bytesize.chr
|
779
|
+
buffer << reply_text
|
748
780
|
buffer << [class_id].pack(PACK_UINT16)
|
749
781
|
buffer << [method_id].pack(PACK_UINT16)
|
750
782
|
MethodFrame.new(buffer, channel)
|
751
783
|
end
|
784
|
+
|
752
785
|
end
|
753
786
|
|
754
787
|
class CloseOk < Protocol::Method
|
@@ -773,38 +806,43 @@ module AMQ
|
|
773
806
|
# @return
|
774
807
|
# []
|
775
808
|
def self.encode(channel)
|
776
|
-
buffer =
|
809
|
+
buffer = ''
|
777
810
|
buffer << @packed_indexes
|
778
811
|
MethodFrame.new(buffer, channel)
|
779
812
|
end
|
813
|
+
|
780
814
|
end
|
815
|
+
|
781
816
|
end
|
782
817
|
|
783
818
|
class Exchange < Protocol::Class
|
784
819
|
@name = "exchange"
|
785
820
|
@method_id = 40
|
786
821
|
|
822
|
+
|
823
|
+
|
787
824
|
class Declare < Protocol::Method
|
788
825
|
@name = "exchange.declare"
|
789
826
|
@method_id = 10
|
790
827
|
@index = 0x0028000A # 40, 10, 2621450
|
791
828
|
@packed_indexes = [40, 10].pack(PACK_UINT16_X2).freeze
|
792
829
|
|
830
|
+
|
793
831
|
def self.has_content?
|
794
832
|
false
|
795
833
|
end
|
796
834
|
|
797
835
|
# @return
|
798
|
-
# [
|
836
|
+
# [u'ticket = 0', u'exchange = nil', u"type = u'direct'", u'passive = false', u'durable = false', u'auto_delete = false', u'internal = false', u'nowait = false', u'arguments = {}']
|
799
837
|
def self.encode(channel, exchange, type, passive, durable, auto_delete, internal, nowait, arguments)
|
800
838
|
ticket = 0
|
801
|
-
buffer =
|
839
|
+
buffer = ''
|
802
840
|
buffer << @packed_indexes
|
803
841
|
buffer << [ticket].pack(PACK_UINT16)
|
804
|
-
buffer << exchange.
|
805
|
-
buffer << exchange
|
806
|
-
buffer << type.
|
807
|
-
buffer << type
|
842
|
+
buffer << exchange.bytesize.chr
|
843
|
+
buffer << exchange
|
844
|
+
buffer << type.bytesize.chr
|
845
|
+
buffer << type
|
808
846
|
bit_buffer = 0
|
809
847
|
bit_buffer = bit_buffer | (1 << 0) if passive
|
810
848
|
bit_buffer = bit_buffer | (1 << 1) if durable
|
@@ -815,6 +853,7 @@ module AMQ
|
|
815
853
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
816
854
|
MethodFrame.new(buffer, channel)
|
817
855
|
end
|
856
|
+
|
818
857
|
end
|
819
858
|
|
820
859
|
class DeclareOk < Protocol::Method
|
@@ -835,6 +874,8 @@ module AMQ
|
|
835
874
|
def self.has_content?
|
836
875
|
false
|
837
876
|
end
|
877
|
+
|
878
|
+
|
838
879
|
end
|
839
880
|
|
840
881
|
class Delete < Protocol::Method
|
@@ -843,25 +884,27 @@ module AMQ
|
|
843
884
|
@index = 0x00280014 # 40, 20, 2621460
|
844
885
|
@packed_indexes = [40, 20].pack(PACK_UINT16_X2).freeze
|
845
886
|
|
887
|
+
|
846
888
|
def self.has_content?
|
847
889
|
false
|
848
890
|
end
|
849
891
|
|
850
892
|
# @return
|
851
|
-
# [
|
893
|
+
# [u'ticket = 0', u'exchange = nil', u'if_unused = false', u'nowait = false']
|
852
894
|
def self.encode(channel, exchange, if_unused, nowait)
|
853
895
|
ticket = 0
|
854
|
-
buffer =
|
896
|
+
buffer = ''
|
855
897
|
buffer << @packed_indexes
|
856
898
|
buffer << [ticket].pack(PACK_UINT16)
|
857
|
-
buffer << exchange.
|
858
|
-
buffer << exchange
|
899
|
+
buffer << exchange.bytesize.chr
|
900
|
+
buffer << exchange
|
859
901
|
bit_buffer = 0
|
860
902
|
bit_buffer = bit_buffer | (1 << 0) if if_unused
|
861
903
|
bit_buffer = bit_buffer | (1 << 1) if nowait
|
862
904
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
863
905
|
MethodFrame.new(buffer, channel)
|
864
906
|
end
|
907
|
+
|
865
908
|
end
|
866
909
|
|
867
910
|
class DeleteOk < Protocol::Method
|
@@ -882,6 +925,8 @@ module AMQ
|
|
882
925
|
def self.has_content?
|
883
926
|
false
|
884
927
|
end
|
928
|
+
|
929
|
+
|
885
930
|
end
|
886
931
|
|
887
932
|
class Bind < Protocol::Method
|
@@ -890,29 +935,31 @@ module AMQ
|
|
890
935
|
@index = 0x0028001E # 40, 30, 2621470
|
891
936
|
@packed_indexes = [40, 30].pack(PACK_UINT16_X2).freeze
|
892
937
|
|
938
|
+
|
893
939
|
def self.has_content?
|
894
940
|
false
|
895
941
|
end
|
896
942
|
|
897
943
|
# @return
|
898
|
-
# [
|
944
|
+
# [u'ticket = 0', u'destination = nil', u'source = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}']
|
899
945
|
def self.encode(channel, destination, source, routing_key, nowait, arguments)
|
900
946
|
ticket = 0
|
901
|
-
buffer =
|
947
|
+
buffer = ''
|
902
948
|
buffer << @packed_indexes
|
903
949
|
buffer << [ticket].pack(PACK_UINT16)
|
904
|
-
buffer << destination.
|
905
|
-
buffer << destination
|
906
|
-
buffer << source.
|
907
|
-
buffer << source
|
908
|
-
buffer << routing_key.
|
909
|
-
buffer << routing_key
|
950
|
+
buffer << destination.bytesize.chr
|
951
|
+
buffer << destination
|
952
|
+
buffer << source.bytesize.chr
|
953
|
+
buffer << source
|
954
|
+
buffer << routing_key.bytesize.chr
|
955
|
+
buffer << routing_key
|
910
956
|
bit_buffer = 0
|
911
957
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
912
958
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
913
959
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
914
960
|
MethodFrame.new(buffer, channel)
|
915
961
|
end
|
962
|
+
|
916
963
|
end
|
917
964
|
|
918
965
|
class BindOk < Protocol::Method
|
@@ -933,6 +980,8 @@ module AMQ
|
|
933
980
|
def self.has_content?
|
934
981
|
false
|
935
982
|
end
|
983
|
+
|
984
|
+
|
936
985
|
end
|
937
986
|
|
938
987
|
class Unbind < Protocol::Method
|
@@ -941,29 +990,31 @@ module AMQ
|
|
941
990
|
@index = 0x00280028 # 40, 40, 2621480
|
942
991
|
@packed_indexes = [40, 40].pack(PACK_UINT16_X2).freeze
|
943
992
|
|
993
|
+
|
944
994
|
def self.has_content?
|
945
995
|
false
|
946
996
|
end
|
947
997
|
|
948
998
|
# @return
|
949
|
-
# [
|
999
|
+
# [u'ticket = 0', u'destination = nil', u'source = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}']
|
950
1000
|
def self.encode(channel, destination, source, routing_key, nowait, arguments)
|
951
1001
|
ticket = 0
|
952
|
-
buffer =
|
1002
|
+
buffer = ''
|
953
1003
|
buffer << @packed_indexes
|
954
1004
|
buffer << [ticket].pack(PACK_UINT16)
|
955
|
-
buffer << destination.
|
956
|
-
buffer << destination
|
957
|
-
buffer << source.
|
958
|
-
buffer << source
|
959
|
-
buffer << routing_key.
|
960
|
-
buffer << routing_key
|
1005
|
+
buffer << destination.bytesize.chr
|
1006
|
+
buffer << destination
|
1007
|
+
buffer << source.bytesize.chr
|
1008
|
+
buffer << source
|
1009
|
+
buffer << routing_key.bytesize.chr
|
1010
|
+
buffer << routing_key
|
961
1011
|
bit_buffer = 0
|
962
1012
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
963
1013
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
964
1014
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
965
1015
|
MethodFrame.new(buffer, channel)
|
966
1016
|
end
|
1017
|
+
|
967
1018
|
end
|
968
1019
|
|
969
1020
|
class UnbindOk < Protocol::Method
|
@@ -984,32 +1035,38 @@ module AMQ
|
|
984
1035
|
def self.has_content?
|
985
1036
|
false
|
986
1037
|
end
|
1038
|
+
|
1039
|
+
|
987
1040
|
end
|
1041
|
+
|
988
1042
|
end
|
989
1043
|
|
990
1044
|
class Queue < Protocol::Class
|
991
1045
|
@name = "queue"
|
992
1046
|
@method_id = 50
|
993
1047
|
|
1048
|
+
|
1049
|
+
|
994
1050
|
class Declare < Protocol::Method
|
995
1051
|
@name = "queue.declare"
|
996
1052
|
@method_id = 10
|
997
1053
|
@index = 0x0032000A # 50, 10, 3276810
|
998
1054
|
@packed_indexes = [50, 10].pack(PACK_UINT16_X2).freeze
|
999
1055
|
|
1056
|
+
|
1000
1057
|
def self.has_content?
|
1001
1058
|
false
|
1002
1059
|
end
|
1003
1060
|
|
1004
1061
|
# @return
|
1005
|
-
# [
|
1062
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'passive = false', u'durable = false', u'exclusive = false', u'auto_delete = false', u'nowait = false', u'arguments = {}']
|
1006
1063
|
def self.encode(channel, queue, passive, durable, exclusive, auto_delete, nowait, arguments)
|
1007
1064
|
ticket = 0
|
1008
|
-
buffer =
|
1065
|
+
buffer = ''
|
1009
1066
|
buffer << @packed_indexes
|
1010
1067
|
buffer << [ticket].pack(PACK_UINT16)
|
1011
|
-
buffer << queue.
|
1012
|
-
buffer << queue
|
1068
|
+
buffer << queue.bytesize.chr
|
1069
|
+
buffer << queue
|
1013
1070
|
bit_buffer = 0
|
1014
1071
|
bit_buffer = bit_buffer | (1 << 0) if passive
|
1015
1072
|
bit_buffer = bit_buffer | (1 << 1) if durable
|
@@ -1020,6 +1077,7 @@ module AMQ
|
|
1020
1077
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
1021
1078
|
MethodFrame.new(buffer, channel)
|
1022
1079
|
end
|
1080
|
+
|
1023
1081
|
end
|
1024
1082
|
|
1025
1083
|
class DeclareOk < Protocol::Method
|
@@ -1052,6 +1110,8 @@ module AMQ
|
|
1052
1110
|
def self.has_content?
|
1053
1111
|
false
|
1054
1112
|
end
|
1113
|
+
|
1114
|
+
|
1055
1115
|
end
|
1056
1116
|
|
1057
1117
|
class Bind < Protocol::Method
|
@@ -1060,29 +1120,31 @@ module AMQ
|
|
1060
1120
|
@index = 0x00320014 # 50, 20, 3276820
|
1061
1121
|
@packed_indexes = [50, 20].pack(PACK_UINT16_X2).freeze
|
1062
1122
|
|
1123
|
+
|
1063
1124
|
def self.has_content?
|
1064
1125
|
false
|
1065
1126
|
end
|
1066
1127
|
|
1067
1128
|
# @return
|
1068
|
-
# [
|
1129
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'exchange = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}']
|
1069
1130
|
def self.encode(channel, queue, exchange, routing_key, nowait, arguments)
|
1070
1131
|
ticket = 0
|
1071
|
-
buffer =
|
1132
|
+
buffer = ''
|
1072
1133
|
buffer << @packed_indexes
|
1073
1134
|
buffer << [ticket].pack(PACK_UINT16)
|
1074
|
-
buffer << queue.
|
1075
|
-
buffer << queue
|
1076
|
-
buffer << exchange.
|
1077
|
-
buffer << exchange
|
1078
|
-
buffer << routing_key.
|
1079
|
-
buffer << routing_key
|
1135
|
+
buffer << queue.bytesize.chr
|
1136
|
+
buffer << queue
|
1137
|
+
buffer << exchange.bytesize.chr
|
1138
|
+
buffer << exchange
|
1139
|
+
buffer << routing_key.bytesize.chr
|
1140
|
+
buffer << routing_key
|
1080
1141
|
bit_buffer = 0
|
1081
1142
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
1082
1143
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1083
1144
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
1084
1145
|
MethodFrame.new(buffer, channel)
|
1085
1146
|
end
|
1147
|
+
|
1086
1148
|
end
|
1087
1149
|
|
1088
1150
|
class BindOk < Protocol::Method
|
@@ -1103,6 +1165,8 @@ module AMQ
|
|
1103
1165
|
def self.has_content?
|
1104
1166
|
false
|
1105
1167
|
end
|
1168
|
+
|
1169
|
+
|
1106
1170
|
end
|
1107
1171
|
|
1108
1172
|
class Purge < Protocol::Method
|
@@ -1111,24 +1175,26 @@ module AMQ
|
|
1111
1175
|
@index = 0x0032001E # 50, 30, 3276830
|
1112
1176
|
@packed_indexes = [50, 30].pack(PACK_UINT16_X2).freeze
|
1113
1177
|
|
1178
|
+
|
1114
1179
|
def self.has_content?
|
1115
1180
|
false
|
1116
1181
|
end
|
1117
1182
|
|
1118
1183
|
# @return
|
1119
|
-
# [
|
1184
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'nowait = false']
|
1120
1185
|
def self.encode(channel, queue, nowait)
|
1121
1186
|
ticket = 0
|
1122
|
-
buffer =
|
1187
|
+
buffer = ''
|
1123
1188
|
buffer << @packed_indexes
|
1124
1189
|
buffer << [ticket].pack(PACK_UINT16)
|
1125
|
-
buffer << queue.
|
1126
|
-
buffer << queue
|
1190
|
+
buffer << queue.bytesize.chr
|
1191
|
+
buffer << queue
|
1127
1192
|
bit_buffer = 0
|
1128
1193
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
1129
1194
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1130
1195
|
MethodFrame.new(buffer, channel)
|
1131
1196
|
end
|
1197
|
+
|
1132
1198
|
end
|
1133
1199
|
|
1134
1200
|
class PurgeOk < Protocol::Method
|
@@ -1153,6 +1219,8 @@ module AMQ
|
|
1153
1219
|
def self.has_content?
|
1154
1220
|
false
|
1155
1221
|
end
|
1222
|
+
|
1223
|
+
|
1156
1224
|
end
|
1157
1225
|
|
1158
1226
|
class Delete < Protocol::Method
|
@@ -1161,19 +1229,20 @@ module AMQ
|
|
1161
1229
|
@index = 0x00320028 # 50, 40, 3276840
|
1162
1230
|
@packed_indexes = [50, 40].pack(PACK_UINT16_X2).freeze
|
1163
1231
|
|
1232
|
+
|
1164
1233
|
def self.has_content?
|
1165
1234
|
false
|
1166
1235
|
end
|
1167
1236
|
|
1168
1237
|
# @return
|
1169
|
-
# [
|
1238
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'if_unused = false', u'if_empty = false', u'nowait = false']
|
1170
1239
|
def self.encode(channel, queue, if_unused, if_empty, nowait)
|
1171
1240
|
ticket = 0
|
1172
|
-
buffer =
|
1241
|
+
buffer = ''
|
1173
1242
|
buffer << @packed_indexes
|
1174
1243
|
buffer << [ticket].pack(PACK_UINT16)
|
1175
|
-
buffer << queue.
|
1176
|
-
buffer << queue
|
1244
|
+
buffer << queue.bytesize.chr
|
1245
|
+
buffer << queue
|
1177
1246
|
bit_buffer = 0
|
1178
1247
|
bit_buffer = bit_buffer | (1 << 0) if if_unused
|
1179
1248
|
bit_buffer = bit_buffer | (1 << 1) if if_empty
|
@@ -1181,6 +1250,7 @@ module AMQ
|
|
1181
1250
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1182
1251
|
MethodFrame.new(buffer, channel)
|
1183
1252
|
end
|
1253
|
+
|
1184
1254
|
end
|
1185
1255
|
|
1186
1256
|
class DeleteOk < Protocol::Method
|
@@ -1205,6 +1275,8 @@ module AMQ
|
|
1205
1275
|
def self.has_content?
|
1206
1276
|
false
|
1207
1277
|
end
|
1278
|
+
|
1279
|
+
|
1208
1280
|
end
|
1209
1281
|
|
1210
1282
|
class Unbind < Protocol::Method
|
@@ -1213,26 +1285,28 @@ module AMQ
|
|
1213
1285
|
@index = 0x00320032 # 50, 50, 3276850
|
1214
1286
|
@packed_indexes = [50, 50].pack(PACK_UINT16_X2).freeze
|
1215
1287
|
|
1288
|
+
|
1216
1289
|
def self.has_content?
|
1217
1290
|
false
|
1218
1291
|
end
|
1219
1292
|
|
1220
1293
|
# @return
|
1221
|
-
# [
|
1294
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'exchange = nil', u'routing_key = EMPTY_STRING', u'arguments = {}']
|
1222
1295
|
def self.encode(channel, queue, exchange, routing_key, arguments)
|
1223
1296
|
ticket = 0
|
1224
|
-
buffer =
|
1297
|
+
buffer = ''
|
1225
1298
|
buffer << @packed_indexes
|
1226
1299
|
buffer << [ticket].pack(PACK_UINT16)
|
1227
|
-
buffer << queue.
|
1228
|
-
buffer << queue
|
1229
|
-
buffer << exchange.
|
1230
|
-
buffer << exchange
|
1231
|
-
buffer << routing_key.
|
1232
|
-
buffer << routing_key
|
1300
|
+
buffer << queue.bytesize.chr
|
1301
|
+
buffer << queue
|
1302
|
+
buffer << exchange.bytesize.chr
|
1303
|
+
buffer << exchange
|
1304
|
+
buffer << routing_key.bytesize.chr
|
1305
|
+
buffer << routing_key
|
1233
1306
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
1234
1307
|
MethodFrame.new(buffer, channel)
|
1235
1308
|
end
|
1309
|
+
|
1236
1310
|
end
|
1237
1311
|
|
1238
1312
|
class UnbindOk < Protocol::Method
|
@@ -1253,7 +1327,10 @@ module AMQ
|
|
1253
1327
|
def self.has_content?
|
1254
1328
|
false
|
1255
1329
|
end
|
1330
|
+
|
1331
|
+
|
1256
1332
|
end
|
1333
|
+
|
1257
1334
|
end
|
1258
1335
|
|
1259
1336
|
class Basic < Protocol::Class
|
@@ -1279,122 +1356,124 @@ module AMQ
|
|
1279
1356
|
|
1280
1357
|
# 1 << 15
|
1281
1358
|
def self.encode_content_type(value)
|
1282
|
-
buffer =
|
1283
|
-
buffer << value.
|
1284
|
-
buffer << value
|
1359
|
+
buffer = ''
|
1360
|
+
buffer << value.bytesize.chr
|
1361
|
+
buffer << value
|
1285
1362
|
[0, 0x8000, buffer]
|
1286
1363
|
end
|
1287
1364
|
|
1288
1365
|
# 1 << 14
|
1289
1366
|
def self.encode_content_encoding(value)
|
1290
|
-
buffer =
|
1291
|
-
buffer << value.
|
1292
|
-
buffer << value
|
1367
|
+
buffer = ''
|
1368
|
+
buffer << value.bytesize.chr
|
1369
|
+
buffer << value
|
1293
1370
|
[1, 0x4000, buffer]
|
1294
1371
|
end
|
1295
1372
|
|
1296
1373
|
# 1 << 13
|
1297
1374
|
def self.encode_headers(value)
|
1298
|
-
buffer =
|
1375
|
+
buffer = ''
|
1299
1376
|
buffer << AMQ::Protocol::Table.encode(value)
|
1300
1377
|
[2, 0x2000, buffer]
|
1301
1378
|
end
|
1302
1379
|
|
1303
1380
|
# 1 << 12
|
1304
1381
|
def self.encode_delivery_mode(value)
|
1305
|
-
buffer =
|
1382
|
+
buffer = ''
|
1306
1383
|
buffer << [value].pack(PACK_CHAR)
|
1307
1384
|
[3, 0x1000, buffer]
|
1308
1385
|
end
|
1309
1386
|
|
1310
1387
|
# 1 << 11
|
1311
1388
|
def self.encode_priority(value)
|
1312
|
-
buffer =
|
1389
|
+
buffer = ''
|
1313
1390
|
buffer << [value].pack(PACK_CHAR)
|
1314
1391
|
[4, 0x0800, buffer]
|
1315
1392
|
end
|
1316
1393
|
|
1317
1394
|
# 1 << 10
|
1318
1395
|
def self.encode_correlation_id(value)
|
1319
|
-
buffer =
|
1320
|
-
buffer << value.
|
1321
|
-
buffer << value
|
1396
|
+
buffer = ''
|
1397
|
+
buffer << value.bytesize.chr
|
1398
|
+
buffer << value
|
1322
1399
|
[5, 0x0400, buffer]
|
1323
1400
|
end
|
1324
1401
|
|
1325
1402
|
# 1 << 9
|
1326
1403
|
def self.encode_reply_to(value)
|
1327
|
-
buffer =
|
1328
|
-
buffer << value.
|
1329
|
-
buffer << value
|
1404
|
+
buffer = ''
|
1405
|
+
buffer << value.bytesize.chr
|
1406
|
+
buffer << value
|
1330
1407
|
[6, 0x0200, buffer]
|
1331
1408
|
end
|
1332
1409
|
|
1333
1410
|
# 1 << 8
|
1334
1411
|
def self.encode_expiration(value)
|
1335
|
-
buffer =
|
1336
|
-
buffer << value.
|
1337
|
-
buffer << value
|
1412
|
+
buffer = ''
|
1413
|
+
buffer << value.bytesize.chr
|
1414
|
+
buffer << value
|
1338
1415
|
[7, 0x0100, buffer]
|
1339
1416
|
end
|
1340
1417
|
|
1341
1418
|
# 1 << 7
|
1342
1419
|
def self.encode_message_id(value)
|
1343
|
-
buffer =
|
1344
|
-
buffer << value.
|
1345
|
-
buffer << value
|
1420
|
+
buffer = ''
|
1421
|
+
buffer << value.bytesize.chr
|
1422
|
+
buffer << value
|
1346
1423
|
[8, 0x0080, buffer]
|
1347
1424
|
end
|
1348
1425
|
|
1349
1426
|
# 1 << 6
|
1350
1427
|
def self.encode_timestamp(value)
|
1351
|
-
buffer =
|
1428
|
+
buffer = ''
|
1352
1429
|
buffer << AMQ::Hacks.pack_64_big_endian(value)
|
1353
1430
|
[9, 0x0040, buffer]
|
1354
1431
|
end
|
1355
1432
|
|
1356
1433
|
# 1 << 5
|
1357
1434
|
def self.encode_type(value)
|
1358
|
-
buffer =
|
1359
|
-
buffer << value.
|
1360
|
-
buffer << value
|
1435
|
+
buffer = ''
|
1436
|
+
buffer << value.bytesize.chr
|
1437
|
+
buffer << value
|
1361
1438
|
[10, 0x0020, buffer]
|
1362
1439
|
end
|
1363
1440
|
|
1364
1441
|
# 1 << 4
|
1365
1442
|
def self.encode_user_id(value)
|
1366
|
-
buffer =
|
1367
|
-
buffer << value.
|
1368
|
-
buffer << value
|
1443
|
+
buffer = ''
|
1444
|
+
buffer << value.bytesize.chr
|
1445
|
+
buffer << value
|
1369
1446
|
[11, 0x0010, buffer]
|
1370
1447
|
end
|
1371
1448
|
|
1372
1449
|
# 1 << 3
|
1373
1450
|
def self.encode_app_id(value)
|
1374
|
-
buffer =
|
1375
|
-
buffer << value.
|
1376
|
-
buffer << value
|
1451
|
+
buffer = ''
|
1452
|
+
buffer << value.bytesize.chr
|
1453
|
+
buffer << value
|
1377
1454
|
[12, 0x0008, buffer]
|
1378
1455
|
end
|
1379
1456
|
|
1380
1457
|
# 1 << 2
|
1381
1458
|
def self.encode_cluster_id(value)
|
1382
|
-
buffer =
|
1383
|
-
buffer << value.
|
1384
|
-
buffer << value
|
1459
|
+
buffer = ''
|
1460
|
+
buffer << value.bytesize.chr
|
1461
|
+
buffer << value
|
1385
1462
|
[13, 0x0004, buffer]
|
1386
1463
|
end
|
1387
1464
|
|
1465
|
+
|
1466
|
+
|
1388
1467
|
def self.encode_properties(body_size, properties)
|
1389
1468
|
pieces, flags = [], 0
|
1390
1469
|
|
1391
|
-
properties.
|
1392
|
-
i, f, result = self.
|
1470
|
+
properties.each do |key, value|
|
1471
|
+
i, f, result = self.send(:"encode_#{key}", value)
|
1393
1472
|
flags |= f
|
1394
1473
|
pieces[i] = result
|
1395
1474
|
end
|
1396
1475
|
|
1397
|
-
# result = [60, 0, body_size, flags].pack(
|
1476
|
+
# result = [60, 0, body_size, flags].pack('n2Qn')
|
1398
1477
|
result = [60, 0].pack(PACK_UINT16_X2)
|
1399
1478
|
result += AMQ::Hacks.pack_64_big_endian(body_size)
|
1400
1479
|
result += [flags].pack(PACK_UINT16)
|
@@ -1436,7 +1515,7 @@ module AMQ
|
|
1436
1515
|
0x0004 => :shortstr,
|
1437
1516
|
}
|
1438
1517
|
|
1439
|
-
# Hash doesn
|
1518
|
+
# Hash doesn't give any guarantees on keys order, we will do it in a
|
1440
1519
|
# straightforward way
|
1441
1520
|
DECODE_PROPERTIES_KEYS = [
|
1442
1521
|
0x8000,
|
@@ -1494,14 +1573,15 @@ module AMQ
|
|
1494
1573
|
@index = 0x003C000A # 60, 10, 3932170
|
1495
1574
|
@packed_indexes = [60, 10].pack(PACK_UINT16_X2).freeze
|
1496
1575
|
|
1576
|
+
|
1497
1577
|
def self.has_content?
|
1498
1578
|
false
|
1499
1579
|
end
|
1500
1580
|
|
1501
1581
|
# @return
|
1502
|
-
# [
|
1582
|
+
# [u'prefetch_size = false', u'prefetch_count = false', u'global = false']
|
1503
1583
|
def self.encode(channel, prefetch_size, prefetch_count, global)
|
1504
|
-
buffer =
|
1584
|
+
buffer = ''
|
1505
1585
|
buffer << @packed_indexes
|
1506
1586
|
buffer << [prefetch_size].pack(PACK_UINT32)
|
1507
1587
|
buffer << [prefetch_count].pack(PACK_UINT16)
|
@@ -1510,6 +1590,7 @@ module AMQ
|
|
1510
1590
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1511
1591
|
MethodFrame.new(buffer, channel)
|
1512
1592
|
end
|
1593
|
+
|
1513
1594
|
end
|
1514
1595
|
|
1515
1596
|
class QosOk < Protocol::Method
|
@@ -1530,6 +1611,8 @@ module AMQ
|
|
1530
1611
|
def self.has_content?
|
1531
1612
|
false
|
1532
1613
|
end
|
1614
|
+
|
1615
|
+
|
1533
1616
|
end
|
1534
1617
|
|
1535
1618
|
class Consume < Protocol::Method
|
@@ -1538,21 +1621,22 @@ module AMQ
|
|
1538
1621
|
@index = 0x003C0014 # 60, 20, 3932180
|
1539
1622
|
@packed_indexes = [60, 20].pack(PACK_UINT16_X2).freeze
|
1540
1623
|
|
1624
|
+
|
1541
1625
|
def self.has_content?
|
1542
1626
|
false
|
1543
1627
|
end
|
1544
1628
|
|
1545
1629
|
# @return
|
1546
|
-
# [
|
1630
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'consumer_tag = EMPTY_STRING', u'no_local = false', u'no_ack = false', u'exclusive = false', u'nowait = false', u'arguments = {}']
|
1547
1631
|
def self.encode(channel, queue, consumer_tag, no_local, no_ack, exclusive, nowait, arguments)
|
1548
1632
|
ticket = 0
|
1549
|
-
buffer =
|
1633
|
+
buffer = ''
|
1550
1634
|
buffer << @packed_indexes
|
1551
1635
|
buffer << [ticket].pack(PACK_UINT16)
|
1552
|
-
buffer << queue.
|
1553
|
-
buffer << queue
|
1554
|
-
buffer << consumer_tag.
|
1555
|
-
buffer << consumer_tag
|
1636
|
+
buffer << queue.bytesize.chr
|
1637
|
+
buffer << queue
|
1638
|
+
buffer << consumer_tag.bytesize.chr
|
1639
|
+
buffer << consumer_tag
|
1556
1640
|
bit_buffer = 0
|
1557
1641
|
bit_buffer = bit_buffer | (1 << 0) if no_local
|
1558
1642
|
bit_buffer = bit_buffer | (1 << 1) if no_ack
|
@@ -1562,6 +1646,7 @@ module AMQ
|
|
1562
1646
|
buffer << AMQ::Protocol::Table.encode(arguments)
|
1563
1647
|
MethodFrame.new(buffer, channel)
|
1564
1648
|
end
|
1649
|
+
|
1565
1650
|
end
|
1566
1651
|
|
1567
1652
|
class ConsumeOk < Protocol::Method
|
@@ -1588,6 +1673,8 @@ module AMQ
|
|
1588
1673
|
def self.has_content?
|
1589
1674
|
false
|
1590
1675
|
end
|
1676
|
+
|
1677
|
+
|
1591
1678
|
end
|
1592
1679
|
|
1593
1680
|
class Cancel < Protocol::Method
|
@@ -1596,41 +1683,24 @@ module AMQ
|
|
1596
1683
|
@index = 0x003C001E # 60, 30, 3932190
|
1597
1684
|
@packed_indexes = [60, 30].pack(PACK_UINT16_X2).freeze
|
1598
1685
|
|
1599
|
-
# @return
|
1600
|
-
def self.decode(data)
|
1601
|
-
offset = 0
|
1602
|
-
length = data[offset, 1].unpack(PACK_CHAR).first
|
1603
|
-
offset += 1
|
1604
|
-
consumer_tag = data[offset, length]
|
1605
|
-
offset += length
|
1606
|
-
bit_buffer = data[offset, 1].unpack(PACK_CHAR).first
|
1607
|
-
offset += 1
|
1608
|
-
nowait = (bit_buffer & (1 << 0)) != 0
|
1609
|
-
self.new(consumer_tag, nowait)
|
1610
|
-
end
|
1611
|
-
|
1612
|
-
attr_reader :consumer_tag, :nowait
|
1613
|
-
def initialize(consumer_tag, nowait)
|
1614
|
-
@consumer_tag = consumer_tag
|
1615
|
-
@nowait = nowait
|
1616
|
-
end
|
1617
1686
|
|
1618
1687
|
def self.has_content?
|
1619
1688
|
false
|
1620
1689
|
end
|
1621
1690
|
|
1622
1691
|
# @return
|
1623
|
-
# [
|
1692
|
+
# [u'consumer_tag = nil', u'nowait = false']
|
1624
1693
|
def self.encode(channel, consumer_tag, nowait)
|
1625
|
-
buffer =
|
1694
|
+
buffer = ''
|
1626
1695
|
buffer << @packed_indexes
|
1627
|
-
buffer << consumer_tag.
|
1628
|
-
buffer << consumer_tag
|
1696
|
+
buffer << consumer_tag.bytesize.chr
|
1697
|
+
buffer << consumer_tag
|
1629
1698
|
bit_buffer = 0
|
1630
1699
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
1631
1700
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1632
1701
|
MethodFrame.new(buffer, channel)
|
1633
1702
|
end
|
1703
|
+
|
1634
1704
|
end
|
1635
1705
|
|
1636
1706
|
class CancelOk < Protocol::Method
|
@@ -1657,6 +1727,8 @@ module AMQ
|
|
1657
1727
|
def self.has_content?
|
1658
1728
|
false
|
1659
1729
|
end
|
1730
|
+
|
1731
|
+
|
1660
1732
|
end
|
1661
1733
|
|
1662
1734
|
class Publish < Protocol::Method
|
@@ -1665,21 +1737,22 @@ module AMQ
|
|
1665
1737
|
@index = 0x003C0028 # 60, 40, 3932200
|
1666
1738
|
@packed_indexes = [60, 40].pack(PACK_UINT16_X2).freeze
|
1667
1739
|
|
1740
|
+
|
1668
1741
|
def self.has_content?
|
1669
1742
|
true
|
1670
1743
|
end
|
1671
1744
|
|
1672
1745
|
# @return
|
1673
|
-
# [
|
1746
|
+
# [u'ticket = 0', u'exchange = EMPTY_STRING', u'routing_key = EMPTY_STRING', u'mandatory = false', u'immediate = false', 'user_headers = nil', 'payload = ""', 'frame_size = nil']
|
1674
1747
|
def self.encode(channel, payload, user_headers, exchange, routing_key, mandatory, immediate, frame_size)
|
1675
1748
|
ticket = 0
|
1676
|
-
buffer =
|
1749
|
+
buffer = ''
|
1677
1750
|
buffer << @packed_indexes
|
1678
1751
|
buffer << [ticket].pack(PACK_UINT16)
|
1679
|
-
buffer << exchange.
|
1680
|
-
buffer << exchange
|
1681
|
-
buffer << routing_key.
|
1682
|
-
buffer << routing_key
|
1752
|
+
buffer << exchange.bytesize.chr
|
1753
|
+
buffer << exchange
|
1754
|
+
buffer << routing_key.bytesize.chr
|
1755
|
+
buffer << routing_key
|
1683
1756
|
bit_buffer = 0
|
1684
1757
|
bit_buffer = bit_buffer | (1 << 0) if mandatory
|
1685
1758
|
bit_buffer = bit_buffer | (1 << 1) if immediate
|
@@ -1694,6 +1767,7 @@ module AMQ
|
|
1694
1767
|
frames << HeaderFrame.new(properties_payload, channel)
|
1695
1768
|
frames + self.encode_body(payload, channel, frame_size)
|
1696
1769
|
end
|
1770
|
+
|
1697
1771
|
end
|
1698
1772
|
|
1699
1773
|
class Return < Protocol::Method
|
@@ -1733,6 +1807,8 @@ module AMQ
|
|
1733
1807
|
def self.has_content?
|
1734
1808
|
true
|
1735
1809
|
end
|
1810
|
+
|
1811
|
+
|
1736
1812
|
end
|
1737
1813
|
|
1738
1814
|
class Deliver < Protocol::Method
|
@@ -1776,6 +1852,8 @@ module AMQ
|
|
1776
1852
|
def self.has_content?
|
1777
1853
|
true
|
1778
1854
|
end
|
1855
|
+
|
1856
|
+
|
1779
1857
|
end
|
1780
1858
|
|
1781
1859
|
class Get < Protocol::Method
|
@@ -1784,24 +1862,26 @@ module AMQ
|
|
1784
1862
|
@index = 0x003C0046 # 60, 70, 3932230
|
1785
1863
|
@packed_indexes = [60, 70].pack(PACK_UINT16_X2).freeze
|
1786
1864
|
|
1865
|
+
|
1787
1866
|
def self.has_content?
|
1788
1867
|
false
|
1789
1868
|
end
|
1790
1869
|
|
1791
1870
|
# @return
|
1792
|
-
# [
|
1871
|
+
# [u'ticket = 0', u'queue = EMPTY_STRING', u'no_ack = false']
|
1793
1872
|
def self.encode(channel, queue, no_ack)
|
1794
1873
|
ticket = 0
|
1795
|
-
buffer =
|
1874
|
+
buffer = ''
|
1796
1875
|
buffer << @packed_indexes
|
1797
1876
|
buffer << [ticket].pack(PACK_UINT16)
|
1798
|
-
buffer << queue.
|
1799
|
-
buffer << queue
|
1877
|
+
buffer << queue.bytesize.chr
|
1878
|
+
buffer << queue
|
1800
1879
|
bit_buffer = 0
|
1801
1880
|
bit_buffer = bit_buffer | (1 << 0) if no_ack
|
1802
1881
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1803
1882
|
MethodFrame.new(buffer, channel)
|
1804
1883
|
end
|
1884
|
+
|
1805
1885
|
end
|
1806
1886
|
|
1807
1887
|
class GetOk < Protocol::Method
|
@@ -1843,6 +1923,8 @@ module AMQ
|
|
1843
1923
|
def self.has_content?
|
1844
1924
|
true
|
1845
1925
|
end
|
1926
|
+
|
1927
|
+
|
1846
1928
|
end
|
1847
1929
|
|
1848
1930
|
class GetEmpty < Protocol::Method
|
@@ -1869,6 +1951,8 @@ module AMQ
|
|
1869
1951
|
def self.has_content?
|
1870
1952
|
false
|
1871
1953
|
end
|
1954
|
+
|
1955
|
+
|
1872
1956
|
end
|
1873
1957
|
|
1874
1958
|
class Ack < Protocol::Method
|
@@ -1899,9 +1983,9 @@ module AMQ
|
|
1899
1983
|
end
|
1900
1984
|
|
1901
1985
|
# @return
|
1902
|
-
# [
|
1986
|
+
# [u'delivery_tag = false', u'multiple = false']
|
1903
1987
|
def self.encode(channel, delivery_tag, multiple)
|
1904
|
-
buffer =
|
1988
|
+
buffer = ''
|
1905
1989
|
buffer << @packed_indexes
|
1906
1990
|
buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag)
|
1907
1991
|
bit_buffer = 0
|
@@ -1909,6 +1993,7 @@ module AMQ
|
|
1909
1993
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1910
1994
|
MethodFrame.new(buffer, channel)
|
1911
1995
|
end
|
1996
|
+
|
1912
1997
|
end
|
1913
1998
|
|
1914
1999
|
class Reject < Protocol::Method
|
@@ -1917,14 +2002,15 @@ module AMQ
|
|
1917
2002
|
@index = 0x003C005A # 60, 90, 3932250
|
1918
2003
|
@packed_indexes = [60, 90].pack(PACK_UINT16_X2).freeze
|
1919
2004
|
|
2005
|
+
|
1920
2006
|
def self.has_content?
|
1921
2007
|
false
|
1922
2008
|
end
|
1923
2009
|
|
1924
2010
|
# @return
|
1925
|
-
# [
|
2011
|
+
# [u'delivery_tag = nil', u'requeue = true']
|
1926
2012
|
def self.encode(channel, delivery_tag, requeue)
|
1927
|
-
buffer =
|
2013
|
+
buffer = ''
|
1928
2014
|
buffer << @packed_indexes
|
1929
2015
|
buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag)
|
1930
2016
|
bit_buffer = 0
|
@@ -1932,6 +2018,7 @@ module AMQ
|
|
1932
2018
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1933
2019
|
MethodFrame.new(buffer, channel)
|
1934
2020
|
end
|
2021
|
+
|
1935
2022
|
end
|
1936
2023
|
|
1937
2024
|
class RecoverAsync < Protocol::Method
|
@@ -1940,20 +2027,22 @@ module AMQ
|
|
1940
2027
|
@index = 0x003C0064 # 60, 100, 3932260
|
1941
2028
|
@packed_indexes = [60, 100].pack(PACK_UINT16_X2).freeze
|
1942
2029
|
|
2030
|
+
|
1943
2031
|
def self.has_content?
|
1944
2032
|
false
|
1945
2033
|
end
|
1946
2034
|
|
1947
2035
|
# @return
|
1948
|
-
# [
|
2036
|
+
# [u'requeue = false']
|
1949
2037
|
def self.encode(channel, requeue)
|
1950
|
-
buffer =
|
2038
|
+
buffer = ''
|
1951
2039
|
buffer << @packed_indexes
|
1952
2040
|
bit_buffer = 0
|
1953
2041
|
bit_buffer = bit_buffer | (1 << 0) if requeue
|
1954
2042
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1955
2043
|
MethodFrame.new(buffer, channel)
|
1956
2044
|
end
|
2045
|
+
|
1957
2046
|
end
|
1958
2047
|
|
1959
2048
|
class Recover < Protocol::Method
|
@@ -1962,20 +2051,22 @@ module AMQ
|
|
1962
2051
|
@index = 0x003C006E # 60, 110, 3932270
|
1963
2052
|
@packed_indexes = [60, 110].pack(PACK_UINT16_X2).freeze
|
1964
2053
|
|
2054
|
+
|
1965
2055
|
def self.has_content?
|
1966
2056
|
false
|
1967
2057
|
end
|
1968
2058
|
|
1969
2059
|
# @return
|
1970
|
-
# [
|
2060
|
+
# [u'requeue = false']
|
1971
2061
|
def self.encode(channel, requeue)
|
1972
|
-
buffer =
|
2062
|
+
buffer = ''
|
1973
2063
|
buffer << @packed_indexes
|
1974
2064
|
bit_buffer = 0
|
1975
2065
|
bit_buffer = bit_buffer | (1 << 0) if requeue
|
1976
2066
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
1977
2067
|
MethodFrame.new(buffer, channel)
|
1978
2068
|
end
|
2069
|
+
|
1979
2070
|
end
|
1980
2071
|
|
1981
2072
|
class RecoverOk < Protocol::Method
|
@@ -1996,6 +2087,8 @@ module AMQ
|
|
1996
2087
|
def self.has_content?
|
1997
2088
|
false
|
1998
2089
|
end
|
2090
|
+
|
2091
|
+
|
1999
2092
|
end
|
2000
2093
|
|
2001
2094
|
class Nack < Protocol::Method
|
@@ -2028,9 +2121,9 @@ module AMQ
|
|
2028
2121
|
end
|
2029
2122
|
|
2030
2123
|
# @return
|
2031
|
-
# [
|
2124
|
+
# [u'delivery_tag = false', u'multiple = false', u'requeue = true']
|
2032
2125
|
def self.encode(channel, delivery_tag, multiple, requeue)
|
2033
|
-
buffer =
|
2126
|
+
buffer = ''
|
2034
2127
|
buffer << @packed_indexes
|
2035
2128
|
buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag)
|
2036
2129
|
bit_buffer = 0
|
@@ -2039,19 +2132,24 @@ module AMQ
|
|
2039
2132
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
2040
2133
|
MethodFrame.new(buffer, channel)
|
2041
2134
|
end
|
2135
|
+
|
2042
2136
|
end
|
2137
|
+
|
2043
2138
|
end
|
2044
2139
|
|
2045
2140
|
class Tx < Protocol::Class
|
2046
2141
|
@name = "tx"
|
2047
2142
|
@method_id = 90
|
2048
2143
|
|
2144
|
+
|
2145
|
+
|
2049
2146
|
class Select < Protocol::Method
|
2050
2147
|
@name = "tx.select"
|
2051
2148
|
@method_id = 10
|
2052
2149
|
@index = 0x005A000A # 90, 10, 5898250
|
2053
2150
|
@packed_indexes = [90, 10].pack(PACK_UINT16_X2).freeze
|
2054
2151
|
|
2152
|
+
|
2055
2153
|
def self.has_content?
|
2056
2154
|
false
|
2057
2155
|
end
|
@@ -2059,10 +2157,11 @@ module AMQ
|
|
2059
2157
|
# @return
|
2060
2158
|
# []
|
2061
2159
|
def self.encode(channel)
|
2062
|
-
buffer =
|
2160
|
+
buffer = ''
|
2063
2161
|
buffer << @packed_indexes
|
2064
2162
|
MethodFrame.new(buffer, channel)
|
2065
2163
|
end
|
2164
|
+
|
2066
2165
|
end
|
2067
2166
|
|
2068
2167
|
class SelectOk < Protocol::Method
|
@@ -2083,6 +2182,8 @@ module AMQ
|
|
2083
2182
|
def self.has_content?
|
2084
2183
|
false
|
2085
2184
|
end
|
2185
|
+
|
2186
|
+
|
2086
2187
|
end
|
2087
2188
|
|
2088
2189
|
class Commit < Protocol::Method
|
@@ -2091,6 +2192,7 @@ module AMQ
|
|
2091
2192
|
@index = 0x005A0014 # 90, 20, 5898260
|
2092
2193
|
@packed_indexes = [90, 20].pack(PACK_UINT16_X2).freeze
|
2093
2194
|
|
2195
|
+
|
2094
2196
|
def self.has_content?
|
2095
2197
|
false
|
2096
2198
|
end
|
@@ -2098,10 +2200,11 @@ module AMQ
|
|
2098
2200
|
# @return
|
2099
2201
|
# []
|
2100
2202
|
def self.encode(channel)
|
2101
|
-
buffer =
|
2203
|
+
buffer = ''
|
2102
2204
|
buffer << @packed_indexes
|
2103
2205
|
MethodFrame.new(buffer, channel)
|
2104
2206
|
end
|
2207
|
+
|
2105
2208
|
end
|
2106
2209
|
|
2107
2210
|
class CommitOk < Protocol::Method
|
@@ -2122,6 +2225,8 @@ module AMQ
|
|
2122
2225
|
def self.has_content?
|
2123
2226
|
false
|
2124
2227
|
end
|
2228
|
+
|
2229
|
+
|
2125
2230
|
end
|
2126
2231
|
|
2127
2232
|
class Rollback < Protocol::Method
|
@@ -2130,6 +2235,7 @@ module AMQ
|
|
2130
2235
|
@index = 0x005A001E # 90, 30, 5898270
|
2131
2236
|
@packed_indexes = [90, 30].pack(PACK_UINT16_X2).freeze
|
2132
2237
|
|
2238
|
+
|
2133
2239
|
def self.has_content?
|
2134
2240
|
false
|
2135
2241
|
end
|
@@ -2137,10 +2243,11 @@ module AMQ
|
|
2137
2243
|
# @return
|
2138
2244
|
# []
|
2139
2245
|
def self.encode(channel)
|
2140
|
-
buffer =
|
2246
|
+
buffer = ''
|
2141
2247
|
buffer << @packed_indexes
|
2142
2248
|
MethodFrame.new(buffer, channel)
|
2143
2249
|
end
|
2250
|
+
|
2144
2251
|
end
|
2145
2252
|
|
2146
2253
|
class RollbackOk < Protocol::Method
|
@@ -2161,13 +2268,18 @@ module AMQ
|
|
2161
2268
|
def self.has_content?
|
2162
2269
|
false
|
2163
2270
|
end
|
2271
|
+
|
2272
|
+
|
2164
2273
|
end
|
2274
|
+
|
2165
2275
|
end
|
2166
2276
|
|
2167
2277
|
class Confirm < Protocol::Class
|
2168
2278
|
@name = "confirm"
|
2169
2279
|
@method_id = 85
|
2170
2280
|
|
2281
|
+
|
2282
|
+
|
2171
2283
|
class Select < Protocol::Method
|
2172
2284
|
@name = "confirm.select"
|
2173
2285
|
@method_id = 10
|
@@ -2193,15 +2305,16 @@ module AMQ
|
|
2193
2305
|
end
|
2194
2306
|
|
2195
2307
|
# @return
|
2196
|
-
# [
|
2308
|
+
# [u'nowait = false']
|
2197
2309
|
def self.encode(channel, nowait)
|
2198
|
-
buffer =
|
2310
|
+
buffer = ''
|
2199
2311
|
buffer << @packed_indexes
|
2200
2312
|
bit_buffer = 0
|
2201
2313
|
bit_buffer = bit_buffer | (1 << 0) if nowait
|
2202
2314
|
buffer << [bit_buffer].pack(PACK_CHAR)
|
2203
2315
|
MethodFrame.new(buffer, channel)
|
2204
2316
|
end
|
2317
|
+
|
2205
2318
|
end
|
2206
2319
|
|
2207
2320
|
class SelectOk < Protocol::Method
|
@@ -2226,13 +2339,16 @@ module AMQ
|
|
2226
2339
|
# @return
|
2227
2340
|
# []
|
2228
2341
|
def self.encode(channel)
|
2229
|
-
buffer =
|
2342
|
+
buffer = ''
|
2230
2343
|
buffer << @packed_indexes
|
2231
2344
|
MethodFrame.new(buffer, channel)
|
2232
2345
|
end
|
2346
|
+
|
2233
2347
|
end
|
2348
|
+
|
2234
2349
|
end
|
2235
2350
|
|
2351
|
+
|
2236
2352
|
METHODS = begin
|
2237
2353
|
Method.methods.inject(Hash.new) do |hash, klass|
|
2238
2354
|
hash.merge!(klass.index => klass)
|
@@ -2240,3 +2356,4 @@ module AMQ
|
|
2240
2356
|
end
|
2241
2357
|
end
|
2242
2358
|
end
|
2359
|
+
|