-
Notifications
You must be signed in to change notification settings - Fork 77
/
rabbit_framing_amqp_0_8.erl
1561 lines (1549 loc) · 84.7 KB
/
rabbit_framing_amqp_0_8.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
%% Autogenerated code. Do not edit.
%%
%% The contents of this file are subject to the Mozilla Public License
%% Version 1.1 (the "License"); you may not use this file except in
%% compliance with the License. You may obtain a copy of the License
%% at http://www.mozilla.org/MPL/
%%
%% Software distributed under the License is distributed on an "AS IS"
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
%% the License for the specific language governing rights and
%% limitations under the License.
%%
%% The Original Code is RabbitMQ.
%%
%% The Initial Developer of the Original Code is VMware, Inc.
%% Copyright (c) 2007-2012 VMware, Inc. All rights reserved.
%%
-module(rabbit_framing_amqp_0_8).
-include("rabbit_framing.hrl").
-export([version/0]).
-export([lookup_method_name/1]).
-export([lookup_class_name/1]).
-export([method_id/1]).
-export([method_has_content/1]).
-export([is_method_synchronous/1]).
-export([method_record/1]).
-export([method_fieldnames/1]).
-export([decode_method_fields/2]).
-export([decode_properties/2]).
-export([encode_method_fields/1]).
-export([encode_properties/1]).
-export([lookup_amqp_exception/1]).
-export([amqp_exception/1]).
%% Various types
-ifdef(use_specs).
-export_type([amqp_field_type/0, amqp_property_type/0,
amqp_table/0, amqp_array/0, amqp_value/0,
amqp_method_name/0, amqp_method/0, amqp_method_record/0,
amqp_method_field_name/0, amqp_property_record/0,
amqp_exception/0, amqp_exception_code/0, amqp_class_id/0]).
-type(amqp_field_type() ::
'longstr' | 'signedint' | 'decimal' | 'timestamp' |
'table' | 'byte' | 'double' | 'float' | 'long' |
'short' | 'bool' | 'binary' | 'void' | 'array').
-type(amqp_property_type() ::
'shortstr' | 'longstr' | 'octet' | 'shortint' | 'longint' |
'longlongint' | 'timestamp' | 'bit' | 'table').
-type(amqp_table() :: [{binary(), amqp_field_type(), amqp_value()}]).
-type(amqp_array() :: [{amqp_field_type(), amqp_value()}]).
-type(amqp_value() :: binary() | % longstr
integer() | % signedint
{non_neg_integer(), non_neg_integer()} | % decimal
amqp_table() |
amqp_array() |
byte() | % byte
float() | % double
integer() | % long
integer() | % short
boolean() | % bool
binary() | % binary
'undefined' | % void
non_neg_integer() % timestamp
).
-type(amqp_method_name() ::
( 'connection.start' | 'connection.start_ok' | 'connection.secure' | 'connection.secure_ok'
| 'connection.tune' | 'connection.tune_ok' | 'connection.open' | 'connection.open_ok'
| 'connection.redirect' | 'connection.close' | 'connection.close_ok' | 'channel.open'
| 'channel.open_ok' | 'channel.flow' | 'channel.flow_ok' | 'channel.alert'
| 'channel.close' | 'channel.close_ok' | 'access.request' | 'access.request_ok'
| 'exchange.declare' | 'exchange.declare_ok' | 'exchange.delete' | 'exchange.delete_ok'
| 'queue.declare' | 'queue.declare_ok' | 'queue.bind' | 'queue.bind_ok'
| 'queue.purge' | 'queue.purge_ok' | 'queue.delete' | 'queue.delete_ok'
| 'queue.unbind' | 'queue.unbind_ok' | 'basic.qos' | 'basic.qos_ok'
| 'basic.consume' | 'basic.consume_ok' | 'basic.cancel' | 'basic.cancel_ok'
| 'basic.publish' | 'basic.return' | 'basic.deliver' | 'basic.get'
| 'basic.get_ok' | 'basic.get_empty' | 'basic.ack' | 'basic.reject'
| 'basic.recover_async' | 'basic.recover' | 'basic.recover_ok' | 'file.qos'
| 'file.qos_ok' | 'file.consume' | 'file.consume_ok' | 'file.cancel'
| 'file.cancel_ok' | 'file.open' | 'file.open_ok' | 'file.stage'
| 'file.publish' | 'file.return' | 'file.deliver' | 'file.ack'
| 'file.reject' | 'stream.qos' | 'stream.qos_ok' | 'stream.consume'
| 'stream.consume_ok' | 'stream.cancel' | 'stream.cancel_ok' | 'stream.publish'
| 'stream.return' | 'stream.deliver' | 'tx.select' | 'tx.select_ok'
| 'tx.commit' | 'tx.commit_ok' | 'tx.rollback' | 'tx.rollback_ok'
| 'dtx.select' | 'dtx.select_ok' | 'dtx.start' | 'dtx.start_ok'
| 'tunnel.request' | 'test.integer' | 'test.integer_ok' | 'test.string'
| 'test.string_ok' | 'test.table' | 'test.table_ok' | 'test.content'
| 'test.content_ok' )).
-type(amqp_method() ::
( {10, 10} | {10, 11} | {10, 20} | {10, 21} | {10, 30} | {10, 31}
| {10, 40} | {10, 41} | {10, 50} | {10, 60} | {10, 61} | {20, 10}
| {20, 11} | {20, 20} | {20, 21} | {20, 30} | {20, 40} | {20, 41}
| {30, 10} | {30, 11} | {40, 10} | {40, 11} | {40, 20} | {40, 21}
| {50, 10} | {50, 11} | {50, 20} | {50, 21} | {50, 30} | {50, 31}
| {50, 40} | {50, 41} | {50, 50} | {50, 51} | {60, 10} | {60, 11}
| {60, 20} | {60, 21} | {60, 30} | {60, 31} | {60, 40} | {60, 50}
| {60, 60} | {60, 70} | {60, 71} | {60, 72} | {60, 80} | {60, 90}
| {60, 100} | {60, 110} | {60, 111} | {70, 10} | {70, 11} | {70, 20}
| {70, 21} | {70, 30} | {70, 31} | {70, 40} | {70, 41} | {70, 50}
| {70, 60} | {70, 70} | {70, 80} | {70, 90} | {70, 100} | {80, 10}
| {80, 11} | {80, 20} | {80, 21} | {80, 30} | {80, 31} | {80, 40}
| {80, 50} | {80, 60} | {90, 10} | {90, 11} | {90, 20} | {90, 21}
| {90, 30} | {90, 31} | {100, 10} | {100, 11} | {100, 20} | {100, 21}
| {110, 10} | {120, 10} | {120, 11} | {120, 20} | {120, 21} | {120, 30}
| {120, 31} | {120, 40} | {120, 41} )).
-type(amqp_method_record() ::
( #'connection.start'{} | #'connection.start_ok'{} | #'connection.secure'{} | #'connection.secure_ok'{}
| #'connection.tune'{} | #'connection.tune_ok'{} | #'connection.open'{} | #'connection.open_ok'{}
| #'connection.redirect'{} | #'connection.close'{} | #'connection.close_ok'{} | #'channel.open'{}
| #'channel.open_ok'{} | #'channel.flow'{} | #'channel.flow_ok'{} | #'channel.alert'{}
| #'channel.close'{} | #'channel.close_ok'{} | #'access.request'{} | #'access.request_ok'{}
| #'exchange.declare'{} | #'exchange.declare_ok'{} | #'exchange.delete'{} | #'exchange.delete_ok'{}
| #'queue.declare'{} | #'queue.declare_ok'{} | #'queue.bind'{} | #'queue.bind_ok'{}
| #'queue.purge'{} | #'queue.purge_ok'{} | #'queue.delete'{} | #'queue.delete_ok'{}
| #'queue.unbind'{} | #'queue.unbind_ok'{} | #'basic.qos'{} | #'basic.qos_ok'{}
| #'basic.consume'{} | #'basic.consume_ok'{} | #'basic.cancel'{} | #'basic.cancel_ok'{}
| #'basic.publish'{} | #'basic.return'{} | #'basic.deliver'{} | #'basic.get'{}
| #'basic.get_ok'{} | #'basic.get_empty'{} | #'basic.ack'{} | #'basic.reject'{}
| #'basic.recover_async'{} | #'basic.recover'{} | #'basic.recover_ok'{} | #'file.qos'{}
| #'file.qos_ok'{} | #'file.consume'{} | #'file.consume_ok'{} | #'file.cancel'{}
| #'file.cancel_ok'{} | #'file.open'{} | #'file.open_ok'{} | #'file.stage'{}
| #'file.publish'{} | #'file.return'{} | #'file.deliver'{} | #'file.ack'{}
| #'file.reject'{} | #'stream.qos'{} | #'stream.qos_ok'{} | #'stream.consume'{}
| #'stream.consume_ok'{} | #'stream.cancel'{} | #'stream.cancel_ok'{} | #'stream.publish'{}
| #'stream.return'{} | #'stream.deliver'{} | #'tx.select'{} | #'tx.select_ok'{}
| #'tx.commit'{} | #'tx.commit_ok'{} | #'tx.rollback'{} | #'tx.rollback_ok'{}
| #'dtx.select'{} | #'dtx.select_ok'{} | #'dtx.start'{} | #'dtx.start_ok'{}
| #'tunnel.request'{} | #'test.integer'{} | #'test.integer_ok'{} | #'test.string'{}
| #'test.string_ok'{} | #'test.table'{} | #'test.table_ok'{} | #'test.content'{}
| #'test.content_ok'{} )).
-type(amqp_method_field_name() ::
( consumer_tag | prefetch_count | message_count | exclusive
| delivery_tag | string_2 | immediate | cluster_id
| ticket | content_checksum | ticket | no_local
| routing_key | frame_max | routing_key | out_of_band
| routing_key | durable | if_empty | exchange
| nowait | queue | routing_key | nowait
| exchange | routing_key | result | ticket
| routing_key | ticket | requeue | active
| channel_max | exchange | delivery_tag | queue
| consumer_tag | integer_3 | operation | consume_rate
| reply_text | consumer_tag | consumer_count | nowait
| global | reply_text | nowait | redelivered
| mandatory | operation | message_count | auto_delete
| nowait | channel_max | string_op | message_count
| method_id | delivery_tag | write | mandatory
| integer_4 | ticket | integer_result | nowait
| consumer_tag | nowait | nowait | prefetch_size
| details | passive | ticket | no_local
| meta_data | ticket | class_id | reply_code
| ticket | consumer_tag | known_hosts | routing_key
| exchange | frame_max | exclusive | reply_code
| response | global | consumer_tag | exclusive
| delivery_tag | read | no_ack | delivery_tag
| reply_code | exchange | version_major | if_unused
| reply_code | identifier | requeue | exclusive
| active | exclusive | nowait | consumer_tag
| staged_size | method_id | immediate | realm
| prefetch_count | type | ticket | routing_key
| heartbeat | arguments | content_size | ticket
| passive | reply_code | integer_1 | consumer_tag
| mechanism | routing_key | table | reply_text
| delivery_tag | arguments | queue | version_minor
| consumer_tag | identifier | identifier | reply_code
| client_properties | ticket | auto_delete | reply_text
| ticket | queue | arguments | insist
| host | reply_text | multiple | routing_key
| ticket | queue | redelivered | delivery_tag
| durable | response | nowait | exchange
| string_result | server_properties | routing_key | consumer_tag
| prefetch_size | message_count | reply_text | immediate
| arguments | exchange | active | ticket
| no_ack | integer_2 | no_local | nowait
| no_ack | consumer_tag | mandatory | integer_op
| queue | capabilities | requeue | prefetch_size
| result | exchange | exchange | queue
| challenge | exchange | locale | exchange
| redelivered | nowait | requeue | known_hosts
| queue | consumer_tag | mechanisms | ticket
| exchange | class_id | heartbeat | exchange
| exchange | multiple | queue | queue
| locales | string_1 | consumer_tag | passive
| if_unused | virtual_host | delivery_tag | prefetch_count
| queue | internal | consumer_tag | global
| consumer_tag | dtx_identifier )).
-type(amqp_property_record() ::
( #'P_connection'{} | #'P_channel'{} | #'P_access'{} | #'P_exchange'{}
| #'P_queue'{} | #'P_basic'{} | #'P_file'{} | #'P_stream'{}
| #'P_tx'{} | #'P_dtx'{} | #'P_tunnel'{} | #'P_test'{} )).
-type(amqp_exception() ::
( 'frame_method' | 'frame_header' | 'frame_body' | 'frame_oob_method'
| 'frame_oob_header' | 'frame_oob_body' | 'frame_trace' | 'frame_heartbeat'
| 'frame_min_size' | 'frame_end' | 'reply_success' | 'not_delivered'
| 'content_too_large' | 'no_route' | 'no_consumers' | 'access_refused'
| 'not_found' | 'resource_locked' | 'precondition_failed' | 'connection_forced'
| 'invalid_path' | 'frame_error' | 'syntax_error' | 'command_invalid'
| 'channel_error' | 'unexpected_frame' | 'resource_error' | 'not_allowed'
| 'not_implemented' | 'internal_error' )).
-type(amqp_exception_code() ::
( 1 | 2 | 3 | 4
| 5 | 6 | 7 | 8
| 4096 | 206 | 200 | 310
| 311 | 312 | 313 | 403
| 404 | 405 | 406 | 320
| 402 | 501 | 502 | 503
| 504 | 505 | 506 | 530
| 540 | 541 )).
-type(amqp_class_id() ::
( 100 | 70 | 40 | 10
| 110 | 80 | 50 | 20
| 120 | 90 | 60 | 30 )).
-type(amqp_class_name() ::
( 'connection' | 'channel' | 'access' | 'exchange'
| 'queue' | 'basic' | 'file' | 'stream'
| 'tx' | 'dtx' | 'tunnel' | 'test' )).
-endif. % use_specs
%% Method signatures
-ifdef(use_specs).
-spec(version/0 :: () -> {non_neg_integer(), non_neg_integer(), non_neg_integer()}).
-spec(lookup_method_name/1 :: (amqp_method()) -> amqp_method_name()).
-spec(lookup_class_name/1 :: (amqp_class_id()) -> amqp_class_name()).
-spec(method_id/1 :: (amqp_method_name()) -> amqp_method()).
-spec(method_has_content/1 :: (amqp_method_name()) -> boolean()).
-spec(is_method_synchronous/1 :: (amqp_method_record()) -> boolean()).
-spec(method_record/1 :: (amqp_method_name()) -> amqp_method_record()).
-spec(method_fieldnames/1 :: (amqp_method_name()) -> [amqp_method_field_name()]).
-spec(decode_method_fields/2 ::
(amqp_method_name(), binary()) -> amqp_method_record() | rabbit_types:connection_exit()).
-spec(decode_properties/2 :: (non_neg_integer(), binary()) -> amqp_property_record()).
-spec(encode_method_fields/1 :: (amqp_method_record()) -> binary()).
-spec(encode_properties/1 :: (amqp_property_record()) -> binary()).
-spec(lookup_amqp_exception/1 :: (amqp_exception()) -> {boolean(), amqp_exception_code(), binary()}).
-spec(amqp_exception/1 :: (amqp_exception_code()) -> amqp_exception()).
-endif. % use_specs
bitvalue(true) -> 1;
bitvalue(false) -> 0;
bitvalue(undefined) -> 0.
shortstr_size(S) ->
case size(S) of
Len when Len =< 255 -> Len;
_ -> exit(method_field_shortstr_overflow)
end.
-define(SHORTSTR_PROP(P, R, L, S, X),
if P =:= 0 -> {undefined, R};
true -> <<L:8/unsigned, S:L/binary, X/binary>> = R,
{S, X}
end).
-define(TABLE_PROP(P, R, L, T, X),
if P =:= 0 -> {undefined, R};
true -> <<L:32/unsigned, T:L/binary, X/binary>> = R,
{rabbit_binary_parser:parse_table(T), X}
end).
-define(OCTET_PROP(P, R, I, X),
if P =:= 0 -> {undefined, R};
true -> <<I:8/unsigned, X/binary>> = R,
{I, X}
end).
-define(TIMESTAMP_PROP(P, R, I, X),
if P =:= 0 -> {undefined, R};
true -> <<I:64/unsigned, X/binary>> = R,
{I, X}
end).
version() -> {0, 8, 0}.
lookup_method_name({10, 10}) -> 'connection.start';
lookup_method_name({10, 11}) -> 'connection.start_ok';
lookup_method_name({10, 20}) -> 'connection.secure';
lookup_method_name({10, 21}) -> 'connection.secure_ok';
lookup_method_name({10, 30}) -> 'connection.tune';
lookup_method_name({10, 31}) -> 'connection.tune_ok';
lookup_method_name({10, 40}) -> 'connection.open';
lookup_method_name({10, 41}) -> 'connection.open_ok';
lookup_method_name({10, 50}) -> 'connection.redirect';
lookup_method_name({10, 60}) -> 'connection.close';
lookup_method_name({10, 61}) -> 'connection.close_ok';
lookup_method_name({20, 10}) -> 'channel.open';
lookup_method_name({20, 11}) -> 'channel.open_ok';
lookup_method_name({20, 20}) -> 'channel.flow';
lookup_method_name({20, 21}) -> 'channel.flow_ok';
lookup_method_name({20, 30}) -> 'channel.alert';
lookup_method_name({20, 40}) -> 'channel.close';
lookup_method_name({20, 41}) -> 'channel.close_ok';
lookup_method_name({30, 10}) -> 'access.request';
lookup_method_name({30, 11}) -> 'access.request_ok';
lookup_method_name({40, 10}) -> 'exchange.declare';
lookup_method_name({40, 11}) -> 'exchange.declare_ok';
lookup_method_name({40, 20}) -> 'exchange.delete';
lookup_method_name({40, 21}) -> 'exchange.delete_ok';
lookup_method_name({50, 10}) -> 'queue.declare';
lookup_method_name({50, 11}) -> 'queue.declare_ok';
lookup_method_name({50, 20}) -> 'queue.bind';
lookup_method_name({50, 21}) -> 'queue.bind_ok';
lookup_method_name({50, 30}) -> 'queue.purge';
lookup_method_name({50, 31}) -> 'queue.purge_ok';
lookup_method_name({50, 40}) -> 'queue.delete';
lookup_method_name({50, 41}) -> 'queue.delete_ok';
lookup_method_name({50, 50}) -> 'queue.unbind';
lookup_method_name({50, 51}) -> 'queue.unbind_ok';
lookup_method_name({60, 10}) -> 'basic.qos';
lookup_method_name({60, 11}) -> 'basic.qos_ok';
lookup_method_name({60, 20}) -> 'basic.consume';
lookup_method_name({60, 21}) -> 'basic.consume_ok';
lookup_method_name({60, 30}) -> 'basic.cancel';
lookup_method_name({60, 31}) -> 'basic.cancel_ok';
lookup_method_name({60, 40}) -> 'basic.publish';
lookup_method_name({60, 50}) -> 'basic.return';
lookup_method_name({60, 60}) -> 'basic.deliver';
lookup_method_name({60, 70}) -> 'basic.get';
lookup_method_name({60, 71}) -> 'basic.get_ok';
lookup_method_name({60, 72}) -> 'basic.get_empty';
lookup_method_name({60, 80}) -> 'basic.ack';
lookup_method_name({60, 90}) -> 'basic.reject';
lookup_method_name({60, 100}) -> 'basic.recover_async';
lookup_method_name({60, 110}) -> 'basic.recover';
lookup_method_name({60, 111}) -> 'basic.recover_ok';
lookup_method_name({70, 10}) -> 'file.qos';
lookup_method_name({70, 11}) -> 'file.qos_ok';
lookup_method_name({70, 20}) -> 'file.consume';
lookup_method_name({70, 21}) -> 'file.consume_ok';
lookup_method_name({70, 30}) -> 'file.cancel';
lookup_method_name({70, 31}) -> 'file.cancel_ok';
lookup_method_name({70, 40}) -> 'file.open';
lookup_method_name({70, 41}) -> 'file.open_ok';
lookup_method_name({70, 50}) -> 'file.stage';
lookup_method_name({70, 60}) -> 'file.publish';
lookup_method_name({70, 70}) -> 'file.return';
lookup_method_name({70, 80}) -> 'file.deliver';
lookup_method_name({70, 90}) -> 'file.ack';
lookup_method_name({70, 100}) -> 'file.reject';
lookup_method_name({80, 10}) -> 'stream.qos';
lookup_method_name({80, 11}) -> 'stream.qos_ok';
lookup_method_name({80, 20}) -> 'stream.consume';
lookup_method_name({80, 21}) -> 'stream.consume_ok';
lookup_method_name({80, 30}) -> 'stream.cancel';
lookup_method_name({80, 31}) -> 'stream.cancel_ok';
lookup_method_name({80, 40}) -> 'stream.publish';
lookup_method_name({80, 50}) -> 'stream.return';
lookup_method_name({80, 60}) -> 'stream.deliver';
lookup_method_name({90, 10}) -> 'tx.select';
lookup_method_name({90, 11}) -> 'tx.select_ok';
lookup_method_name({90, 20}) -> 'tx.commit';
lookup_method_name({90, 21}) -> 'tx.commit_ok';
lookup_method_name({90, 30}) -> 'tx.rollback';
lookup_method_name({90, 31}) -> 'tx.rollback_ok';
lookup_method_name({100, 10}) -> 'dtx.select';
lookup_method_name({100, 11}) -> 'dtx.select_ok';
lookup_method_name({100, 20}) -> 'dtx.start';
lookup_method_name({100, 21}) -> 'dtx.start_ok';
lookup_method_name({110, 10}) -> 'tunnel.request';
lookup_method_name({120, 10}) -> 'test.integer';
lookup_method_name({120, 11}) -> 'test.integer_ok';
lookup_method_name({120, 20}) -> 'test.string';
lookup_method_name({120, 21}) -> 'test.string_ok';
lookup_method_name({120, 30}) -> 'test.table';
lookup_method_name({120, 31}) -> 'test.table_ok';
lookup_method_name({120, 40}) -> 'test.content';
lookup_method_name({120, 41}) -> 'test.content_ok';
lookup_method_name({_ClassId, _MethodId} = Id) -> exit({unknown_method_id, Id}).
lookup_class_name(10) -> 'connection';
lookup_class_name(20) -> 'channel';
lookup_class_name(30) -> 'access';
lookup_class_name(40) -> 'exchange';
lookup_class_name(50) -> 'queue';
lookup_class_name(60) -> 'basic';
lookup_class_name(70) -> 'file';
lookup_class_name(80) -> 'stream';
lookup_class_name(90) -> 'tx';
lookup_class_name(100) -> 'dtx';
lookup_class_name(110) -> 'tunnel';
lookup_class_name(120) -> 'test';
lookup_class_name(ClassId) -> exit({unknown_class_id, ClassId}).
method_id('connection.start') -> {10, 10};
method_id('connection.start_ok') -> {10, 11};
method_id('connection.secure') -> {10, 20};
method_id('connection.secure_ok') -> {10, 21};
method_id('connection.tune') -> {10, 30};
method_id('connection.tune_ok') -> {10, 31};
method_id('connection.open') -> {10, 40};
method_id('connection.open_ok') -> {10, 41};
method_id('connection.redirect') -> {10, 50};
method_id('connection.close') -> {10, 60};
method_id('connection.close_ok') -> {10, 61};
method_id('channel.open') -> {20, 10};
method_id('channel.open_ok') -> {20, 11};
method_id('channel.flow') -> {20, 20};
method_id('channel.flow_ok') -> {20, 21};
method_id('channel.alert') -> {20, 30};
method_id('channel.close') -> {20, 40};
method_id('channel.close_ok') -> {20, 41};
method_id('access.request') -> {30, 10};
method_id('access.request_ok') -> {30, 11};
method_id('exchange.declare') -> {40, 10};
method_id('exchange.declare_ok') -> {40, 11};
method_id('exchange.delete') -> {40, 20};
method_id('exchange.delete_ok') -> {40, 21};
method_id('queue.declare') -> {50, 10};
method_id('queue.declare_ok') -> {50, 11};
method_id('queue.bind') -> {50, 20};
method_id('queue.bind_ok') -> {50, 21};
method_id('queue.purge') -> {50, 30};
method_id('queue.purge_ok') -> {50, 31};
method_id('queue.delete') -> {50, 40};
method_id('queue.delete_ok') -> {50, 41};
method_id('queue.unbind') -> {50, 50};
method_id('queue.unbind_ok') -> {50, 51};
method_id('basic.qos') -> {60, 10};
method_id('basic.qos_ok') -> {60, 11};
method_id('basic.consume') -> {60, 20};
method_id('basic.consume_ok') -> {60, 21};
method_id('basic.cancel') -> {60, 30};
method_id('basic.cancel_ok') -> {60, 31};
method_id('basic.publish') -> {60, 40};
method_id('basic.return') -> {60, 50};
method_id('basic.deliver') -> {60, 60};
method_id('basic.get') -> {60, 70};
method_id('basic.get_ok') -> {60, 71};
method_id('basic.get_empty') -> {60, 72};
method_id('basic.ack') -> {60, 80};
method_id('basic.reject') -> {60, 90};
method_id('basic.recover_async') -> {60, 100};
method_id('basic.recover') -> {60, 110};
method_id('basic.recover_ok') -> {60, 111};
method_id('file.qos') -> {70, 10};
method_id('file.qos_ok') -> {70, 11};
method_id('file.consume') -> {70, 20};
method_id('file.consume_ok') -> {70, 21};
method_id('file.cancel') -> {70, 30};
method_id('file.cancel_ok') -> {70, 31};
method_id('file.open') -> {70, 40};
method_id('file.open_ok') -> {70, 41};
method_id('file.stage') -> {70, 50};
method_id('file.publish') -> {70, 60};
method_id('file.return') -> {70, 70};
method_id('file.deliver') -> {70, 80};
method_id('file.ack') -> {70, 90};
method_id('file.reject') -> {70, 100};
method_id('stream.qos') -> {80, 10};
method_id('stream.qos_ok') -> {80, 11};
method_id('stream.consume') -> {80, 20};
method_id('stream.consume_ok') -> {80, 21};
method_id('stream.cancel') -> {80, 30};
method_id('stream.cancel_ok') -> {80, 31};
method_id('stream.publish') -> {80, 40};
method_id('stream.return') -> {80, 50};
method_id('stream.deliver') -> {80, 60};
method_id('tx.select') -> {90, 10};
method_id('tx.select_ok') -> {90, 11};
method_id('tx.commit') -> {90, 20};
method_id('tx.commit_ok') -> {90, 21};
method_id('tx.rollback') -> {90, 30};
method_id('tx.rollback_ok') -> {90, 31};
method_id('dtx.select') -> {100, 10};
method_id('dtx.select_ok') -> {100, 11};
method_id('dtx.start') -> {100, 20};
method_id('dtx.start_ok') -> {100, 21};
method_id('tunnel.request') -> {110, 10};
method_id('test.integer') -> {120, 10};
method_id('test.integer_ok') -> {120, 11};
method_id('test.string') -> {120, 20};
method_id('test.string_ok') -> {120, 21};
method_id('test.table') -> {120, 30};
method_id('test.table_ok') -> {120, 31};
method_id('test.content') -> {120, 40};
method_id('test.content_ok') -> {120, 41};
method_id(Name) -> exit({unknown_method_name, Name}).
method_has_content('connection.start') -> false;
method_has_content('connection.start_ok') -> false;
method_has_content('connection.secure') -> false;
method_has_content('connection.secure_ok') -> false;
method_has_content('connection.tune') -> false;
method_has_content('connection.tune_ok') -> false;
method_has_content('connection.open') -> false;
method_has_content('connection.open_ok') -> false;
method_has_content('connection.redirect') -> false;
method_has_content('connection.close') -> false;
method_has_content('connection.close_ok') -> false;
method_has_content('channel.open') -> false;
method_has_content('channel.open_ok') -> false;
method_has_content('channel.flow') -> false;
method_has_content('channel.flow_ok') -> false;
method_has_content('channel.alert') -> false;
method_has_content('channel.close') -> false;
method_has_content('channel.close_ok') -> false;
method_has_content('access.request') -> false;
method_has_content('access.request_ok') -> false;
method_has_content('exchange.declare') -> false;
method_has_content('exchange.declare_ok') -> false;
method_has_content('exchange.delete') -> false;
method_has_content('exchange.delete_ok') -> false;
method_has_content('queue.declare') -> false;
method_has_content('queue.declare_ok') -> false;
method_has_content('queue.bind') -> false;
method_has_content('queue.bind_ok') -> false;
method_has_content('queue.purge') -> false;
method_has_content('queue.purge_ok') -> false;
method_has_content('queue.delete') -> false;
method_has_content('queue.delete_ok') -> false;
method_has_content('queue.unbind') -> false;
method_has_content('queue.unbind_ok') -> false;
method_has_content('basic.qos') -> false;
method_has_content('basic.qos_ok') -> false;
method_has_content('basic.consume') -> false;
method_has_content('basic.consume_ok') -> false;
method_has_content('basic.cancel') -> false;
method_has_content('basic.cancel_ok') -> false;
method_has_content('basic.publish') -> true;
method_has_content('basic.return') -> true;
method_has_content('basic.deliver') -> true;
method_has_content('basic.get') -> false;
method_has_content('basic.get_ok') -> true;
method_has_content('basic.get_empty') -> false;
method_has_content('basic.ack') -> false;
method_has_content('basic.reject') -> false;
method_has_content('basic.recover_async') -> false;
method_has_content('basic.recover') -> false;
method_has_content('basic.recover_ok') -> false;
method_has_content('file.qos') -> false;
method_has_content('file.qos_ok') -> false;
method_has_content('file.consume') -> false;
method_has_content('file.consume_ok') -> false;
method_has_content('file.cancel') -> false;
method_has_content('file.cancel_ok') -> false;
method_has_content('file.open') -> false;
method_has_content('file.open_ok') -> false;
method_has_content('file.stage') -> true;
method_has_content('file.publish') -> false;
method_has_content('file.return') -> true;
method_has_content('file.deliver') -> false;
method_has_content('file.ack') -> false;
method_has_content('file.reject') -> false;
method_has_content('stream.qos') -> false;
method_has_content('stream.qos_ok') -> false;
method_has_content('stream.consume') -> false;
method_has_content('stream.consume_ok') -> false;
method_has_content('stream.cancel') -> false;
method_has_content('stream.cancel_ok') -> false;
method_has_content('stream.publish') -> true;
method_has_content('stream.return') -> true;
method_has_content('stream.deliver') -> true;
method_has_content('tx.select') -> false;
method_has_content('tx.select_ok') -> false;
method_has_content('tx.commit') -> false;
method_has_content('tx.commit_ok') -> false;
method_has_content('tx.rollback') -> false;
method_has_content('tx.rollback_ok') -> false;
method_has_content('dtx.select') -> false;
method_has_content('dtx.select_ok') -> false;
method_has_content('dtx.start') -> false;
method_has_content('dtx.start_ok') -> false;
method_has_content('tunnel.request') -> true;
method_has_content('test.integer') -> false;
method_has_content('test.integer_ok') -> false;
method_has_content('test.string') -> false;
method_has_content('test.string_ok') -> false;
method_has_content('test.table') -> false;
method_has_content('test.table_ok') -> false;
method_has_content('test.content') -> true;
method_has_content('test.content_ok') -> true;
method_has_content(Name) -> exit({unknown_method_name, Name}).
is_method_synchronous(#'connection.start'{}) -> true;
is_method_synchronous(#'connection.start_ok'{}) -> false;
is_method_synchronous(#'connection.secure'{}) -> true;
is_method_synchronous(#'connection.secure_ok'{}) -> false;
is_method_synchronous(#'connection.tune'{}) -> true;
is_method_synchronous(#'connection.tune_ok'{}) -> false;
is_method_synchronous(#'connection.open'{}) -> true;
is_method_synchronous(#'connection.open_ok'{}) -> false;
is_method_synchronous(#'connection.redirect'{}) -> false;
is_method_synchronous(#'connection.close'{}) -> true;
is_method_synchronous(#'connection.close_ok'{}) -> false;
is_method_synchronous(#'channel.open'{}) -> true;
is_method_synchronous(#'channel.open_ok'{}) -> false;
is_method_synchronous(#'channel.flow'{}) -> true;
is_method_synchronous(#'channel.flow_ok'{}) -> false;
is_method_synchronous(#'channel.alert'{}) -> false;
is_method_synchronous(#'channel.close'{}) -> true;
is_method_synchronous(#'channel.close_ok'{}) -> false;
is_method_synchronous(#'access.request'{}) -> true;
is_method_synchronous(#'access.request_ok'{}) -> false;
is_method_synchronous(#'exchange.declare'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'exchange.declare_ok'{}) -> false;
is_method_synchronous(#'exchange.delete'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'exchange.delete_ok'{}) -> false;
is_method_synchronous(#'queue.declare'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'queue.declare_ok'{}) -> false;
is_method_synchronous(#'queue.bind'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'queue.bind_ok'{}) -> false;
is_method_synchronous(#'queue.purge'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'queue.purge_ok'{}) -> false;
is_method_synchronous(#'queue.delete'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'queue.delete_ok'{}) -> false;
is_method_synchronous(#'queue.unbind'{}) -> true;
is_method_synchronous(#'queue.unbind_ok'{}) -> false;
is_method_synchronous(#'basic.qos'{}) -> true;
is_method_synchronous(#'basic.qos_ok'{}) -> false;
is_method_synchronous(#'basic.consume'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'basic.consume_ok'{}) -> false;
is_method_synchronous(#'basic.cancel'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'basic.cancel_ok'{}) -> false;
is_method_synchronous(#'basic.publish'{}) -> false;
is_method_synchronous(#'basic.return'{}) -> false;
is_method_synchronous(#'basic.deliver'{}) -> false;
is_method_synchronous(#'basic.get'{}) -> true;
is_method_synchronous(#'basic.get_ok'{}) -> false;
is_method_synchronous(#'basic.get_empty'{}) -> false;
is_method_synchronous(#'basic.ack'{}) -> false;
is_method_synchronous(#'basic.reject'{}) -> false;
is_method_synchronous(#'basic.recover_async'{}) -> false;
is_method_synchronous(#'basic.recover'{}) -> true;
is_method_synchronous(#'basic.recover_ok'{}) -> false;
is_method_synchronous(#'file.qos'{}) -> true;
is_method_synchronous(#'file.qos_ok'{}) -> false;
is_method_synchronous(#'file.consume'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'file.consume_ok'{}) -> false;
is_method_synchronous(#'file.cancel'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'file.cancel_ok'{}) -> false;
is_method_synchronous(#'file.open'{}) -> true;
is_method_synchronous(#'file.open_ok'{}) -> false;
is_method_synchronous(#'file.stage'{}) -> false;
is_method_synchronous(#'file.publish'{}) -> false;
is_method_synchronous(#'file.return'{}) -> false;
is_method_synchronous(#'file.deliver'{}) -> false;
is_method_synchronous(#'file.ack'{}) -> false;
is_method_synchronous(#'file.reject'{}) -> false;
is_method_synchronous(#'stream.qos'{}) -> true;
is_method_synchronous(#'stream.qos_ok'{}) -> false;
is_method_synchronous(#'stream.consume'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'stream.consume_ok'{}) -> false;
is_method_synchronous(#'stream.cancel'{nowait = NoWait}) -> not(NoWait);
is_method_synchronous(#'stream.cancel_ok'{}) -> false;
is_method_synchronous(#'stream.publish'{}) -> false;
is_method_synchronous(#'stream.return'{}) -> false;
is_method_synchronous(#'stream.deliver'{}) -> false;
is_method_synchronous(#'tx.select'{}) -> true;
is_method_synchronous(#'tx.select_ok'{}) -> false;
is_method_synchronous(#'tx.commit'{}) -> true;
is_method_synchronous(#'tx.commit_ok'{}) -> false;
is_method_synchronous(#'tx.rollback'{}) -> true;
is_method_synchronous(#'tx.rollback_ok'{}) -> false;
is_method_synchronous(#'dtx.select'{}) -> true;
is_method_synchronous(#'dtx.select_ok'{}) -> false;
is_method_synchronous(#'dtx.start'{}) -> true;
is_method_synchronous(#'dtx.start_ok'{}) -> false;
is_method_synchronous(#'tunnel.request'{}) -> false;
is_method_synchronous(#'test.integer'{}) -> true;
is_method_synchronous(#'test.integer_ok'{}) -> false;
is_method_synchronous(#'test.string'{}) -> true;
is_method_synchronous(#'test.string_ok'{}) -> false;
is_method_synchronous(#'test.table'{}) -> true;
is_method_synchronous(#'test.table_ok'{}) -> false;
is_method_synchronous(#'test.content'{}) -> true;
is_method_synchronous(#'test.content_ok'{}) -> false;
is_method_synchronous(Name) -> exit({unknown_method_name, Name}).
method_record('connection.start') -> #'connection.start'{};
method_record('connection.start_ok') -> #'connection.start_ok'{};
method_record('connection.secure') -> #'connection.secure'{};
method_record('connection.secure_ok') -> #'connection.secure_ok'{};
method_record('connection.tune') -> #'connection.tune'{};
method_record('connection.tune_ok') -> #'connection.tune_ok'{};
method_record('connection.open') -> #'connection.open'{};
method_record('connection.open_ok') -> #'connection.open_ok'{};
method_record('connection.redirect') -> #'connection.redirect'{};
method_record('connection.close') -> #'connection.close'{};
method_record('connection.close_ok') -> #'connection.close_ok'{};
method_record('channel.open') -> #'channel.open'{};
method_record('channel.open_ok') -> #'channel.open_ok'{};
method_record('channel.flow') -> #'channel.flow'{};
method_record('channel.flow_ok') -> #'channel.flow_ok'{};
method_record('channel.alert') -> #'channel.alert'{};
method_record('channel.close') -> #'channel.close'{};
method_record('channel.close_ok') -> #'channel.close_ok'{};
method_record('access.request') -> #'access.request'{};
method_record('access.request_ok') -> #'access.request_ok'{};
method_record('exchange.declare') -> #'exchange.declare'{};
method_record('exchange.declare_ok') -> #'exchange.declare_ok'{};
method_record('exchange.delete') -> #'exchange.delete'{};
method_record('exchange.delete_ok') -> #'exchange.delete_ok'{};
method_record('queue.declare') -> #'queue.declare'{};
method_record('queue.declare_ok') -> #'queue.declare_ok'{};
method_record('queue.bind') -> #'queue.bind'{};
method_record('queue.bind_ok') -> #'queue.bind_ok'{};
method_record('queue.purge') -> #'queue.purge'{};
method_record('queue.purge_ok') -> #'queue.purge_ok'{};
method_record('queue.delete') -> #'queue.delete'{};
method_record('queue.delete_ok') -> #'queue.delete_ok'{};
method_record('queue.unbind') -> #'queue.unbind'{};
method_record('queue.unbind_ok') -> #'queue.unbind_ok'{};
method_record('basic.qos') -> #'basic.qos'{};
method_record('basic.qos_ok') -> #'basic.qos_ok'{};
method_record('basic.consume') -> #'basic.consume'{};
method_record('basic.consume_ok') -> #'basic.consume_ok'{};
method_record('basic.cancel') -> #'basic.cancel'{};
method_record('basic.cancel_ok') -> #'basic.cancel_ok'{};
method_record('basic.publish') -> #'basic.publish'{};
method_record('basic.return') -> #'basic.return'{};
method_record('basic.deliver') -> #'basic.deliver'{};
method_record('basic.get') -> #'basic.get'{};
method_record('basic.get_ok') -> #'basic.get_ok'{};
method_record('basic.get_empty') -> #'basic.get_empty'{};
method_record('basic.ack') -> #'basic.ack'{};
method_record('basic.reject') -> #'basic.reject'{};
method_record('basic.recover_async') -> #'basic.recover_async'{};
method_record('basic.recover') -> #'basic.recover'{};
method_record('basic.recover_ok') -> #'basic.recover_ok'{};
method_record('file.qos') -> #'file.qos'{};
method_record('file.qos_ok') -> #'file.qos_ok'{};
method_record('file.consume') -> #'file.consume'{};
method_record('file.consume_ok') -> #'file.consume_ok'{};
method_record('file.cancel') -> #'file.cancel'{};
method_record('file.cancel_ok') -> #'file.cancel_ok'{};
method_record('file.open') -> #'file.open'{};
method_record('file.open_ok') -> #'file.open_ok'{};
method_record('file.stage') -> #'file.stage'{};
method_record('file.publish') -> #'file.publish'{};
method_record('file.return') -> #'file.return'{};
method_record('file.deliver') -> #'file.deliver'{};
method_record('file.ack') -> #'file.ack'{};
method_record('file.reject') -> #'file.reject'{};
method_record('stream.qos') -> #'stream.qos'{};
method_record('stream.qos_ok') -> #'stream.qos_ok'{};
method_record('stream.consume') -> #'stream.consume'{};
method_record('stream.consume_ok') -> #'stream.consume_ok'{};
method_record('stream.cancel') -> #'stream.cancel'{};
method_record('stream.cancel_ok') -> #'stream.cancel_ok'{};
method_record('stream.publish') -> #'stream.publish'{};
method_record('stream.return') -> #'stream.return'{};
method_record('stream.deliver') -> #'stream.deliver'{};
method_record('tx.select') -> #'tx.select'{};
method_record('tx.select_ok') -> #'tx.select_ok'{};
method_record('tx.commit') -> #'tx.commit'{};
method_record('tx.commit_ok') -> #'tx.commit_ok'{};
method_record('tx.rollback') -> #'tx.rollback'{};
method_record('tx.rollback_ok') -> #'tx.rollback_ok'{};
method_record('dtx.select') -> #'dtx.select'{};
method_record('dtx.select_ok') -> #'dtx.select_ok'{};
method_record('dtx.start') -> #'dtx.start'{};
method_record('dtx.start_ok') -> #'dtx.start_ok'{};
method_record('tunnel.request') -> #'tunnel.request'{};
method_record('test.integer') -> #'test.integer'{};
method_record('test.integer_ok') -> #'test.integer_ok'{};
method_record('test.string') -> #'test.string'{};
method_record('test.string_ok') -> #'test.string_ok'{};
method_record('test.table') -> #'test.table'{};
method_record('test.table_ok') -> #'test.table_ok'{};
method_record('test.content') -> #'test.content'{};
method_record('test.content_ok') -> #'test.content_ok'{};
method_record(Name) -> exit({unknown_method_name, Name}).
method_fieldnames('connection.start') -> [version_major, version_minor, server_properties, mechanisms, locales];
method_fieldnames('connection.start_ok') -> [client_properties, mechanism, response, locale];
method_fieldnames('connection.secure') -> [challenge];
method_fieldnames('connection.secure_ok') -> [response];
method_fieldnames('connection.tune') -> [channel_max, frame_max, heartbeat];
method_fieldnames('connection.tune_ok') -> [channel_max, frame_max, heartbeat];
method_fieldnames('connection.open') -> [virtual_host, capabilities, insist];
method_fieldnames('connection.open_ok') -> [known_hosts];
method_fieldnames('connection.redirect') -> [host, known_hosts];
method_fieldnames('connection.close') -> [reply_code, reply_text, class_id, method_id];
method_fieldnames('connection.close_ok') -> [];
method_fieldnames('channel.open') -> [out_of_band];
method_fieldnames('channel.open_ok') -> [];
method_fieldnames('channel.flow') -> [active];
method_fieldnames('channel.flow_ok') -> [active];
method_fieldnames('channel.alert') -> [reply_code, reply_text, details];
method_fieldnames('channel.close') -> [reply_code, reply_text, class_id, method_id];
method_fieldnames('channel.close_ok') -> [];
method_fieldnames('access.request') -> [realm, exclusive, passive, active, write, read];
method_fieldnames('access.request_ok') -> [ticket];
method_fieldnames('exchange.declare') -> [ticket, exchange, type, passive, durable, auto_delete, internal, nowait, arguments];
method_fieldnames('exchange.declare_ok') -> [];
method_fieldnames('exchange.delete') -> [ticket, exchange, if_unused, nowait];
method_fieldnames('exchange.delete_ok') -> [];
method_fieldnames('queue.declare') -> [ticket, queue, passive, durable, exclusive, auto_delete, nowait, arguments];
method_fieldnames('queue.declare_ok') -> [queue, message_count, consumer_count];
method_fieldnames('queue.bind') -> [ticket, queue, exchange, routing_key, nowait, arguments];
method_fieldnames('queue.bind_ok') -> [];
method_fieldnames('queue.purge') -> [ticket, queue, nowait];
method_fieldnames('queue.purge_ok') -> [message_count];
method_fieldnames('queue.delete') -> [ticket, queue, if_unused, if_empty, nowait];
method_fieldnames('queue.delete_ok') -> [message_count];
method_fieldnames('queue.unbind') -> [ticket, queue, exchange, routing_key, arguments];
method_fieldnames('queue.unbind_ok') -> [];
method_fieldnames('basic.qos') -> [prefetch_size, prefetch_count, global];
method_fieldnames('basic.qos_ok') -> [];
method_fieldnames('basic.consume') -> [ticket, queue, consumer_tag, no_local, no_ack, exclusive, nowait];
method_fieldnames('basic.consume_ok') -> [consumer_tag];
method_fieldnames('basic.cancel') -> [consumer_tag, nowait];
method_fieldnames('basic.cancel_ok') -> [consumer_tag];
method_fieldnames('basic.publish') -> [ticket, exchange, routing_key, mandatory, immediate];
method_fieldnames('basic.return') -> [reply_code, reply_text, exchange, routing_key];
method_fieldnames('basic.deliver') -> [consumer_tag, delivery_tag, redelivered, exchange, routing_key];
method_fieldnames('basic.get') -> [ticket, queue, no_ack];
method_fieldnames('basic.get_ok') -> [delivery_tag, redelivered, exchange, routing_key, message_count];
method_fieldnames('basic.get_empty') -> [cluster_id];
method_fieldnames('basic.ack') -> [delivery_tag, multiple];
method_fieldnames('basic.reject') -> [delivery_tag, requeue];
method_fieldnames('basic.recover_async') -> [requeue];
method_fieldnames('basic.recover') -> [requeue];
method_fieldnames('basic.recover_ok') -> [];
method_fieldnames('file.qos') -> [prefetch_size, prefetch_count, global];
method_fieldnames('file.qos_ok') -> [];
method_fieldnames('file.consume') -> [ticket, queue, consumer_tag, no_local, no_ack, exclusive, nowait];
method_fieldnames('file.consume_ok') -> [consumer_tag];
method_fieldnames('file.cancel') -> [consumer_tag, nowait];
method_fieldnames('file.cancel_ok') -> [consumer_tag];
method_fieldnames('file.open') -> [identifier, content_size];
method_fieldnames('file.open_ok') -> [staged_size];
method_fieldnames('file.stage') -> [];
method_fieldnames('file.publish') -> [ticket, exchange, routing_key, mandatory, immediate, identifier];
method_fieldnames('file.return') -> [reply_code, reply_text, exchange, routing_key];
method_fieldnames('file.deliver') -> [consumer_tag, delivery_tag, redelivered, exchange, routing_key, identifier];
method_fieldnames('file.ack') -> [delivery_tag, multiple];
method_fieldnames('file.reject') -> [delivery_tag, requeue];
method_fieldnames('stream.qos') -> [prefetch_size, prefetch_count, consume_rate, global];
method_fieldnames('stream.qos_ok') -> [];
method_fieldnames('stream.consume') -> [ticket, queue, consumer_tag, no_local, exclusive, nowait];
method_fieldnames('stream.consume_ok') -> [consumer_tag];
method_fieldnames('stream.cancel') -> [consumer_tag, nowait];
method_fieldnames('stream.cancel_ok') -> [consumer_tag];
method_fieldnames('stream.publish') -> [ticket, exchange, routing_key, mandatory, immediate];
method_fieldnames('stream.return') -> [reply_code, reply_text, exchange, routing_key];
method_fieldnames('stream.deliver') -> [consumer_tag, delivery_tag, exchange, queue];
method_fieldnames('tx.select') -> [];
method_fieldnames('tx.select_ok') -> [];
method_fieldnames('tx.commit') -> [];
method_fieldnames('tx.commit_ok') -> [];
method_fieldnames('tx.rollback') -> [];
method_fieldnames('tx.rollback_ok') -> [];
method_fieldnames('dtx.select') -> [];
method_fieldnames('dtx.select_ok') -> [];
method_fieldnames('dtx.start') -> [dtx_identifier];
method_fieldnames('dtx.start_ok') -> [];
method_fieldnames('tunnel.request') -> [meta_data];
method_fieldnames('test.integer') -> [integer_1, integer_2, integer_3, integer_4, operation];
method_fieldnames('test.integer_ok') -> [result];
method_fieldnames('test.string') -> [string_1, string_2, operation];
method_fieldnames('test.string_ok') -> [result];
method_fieldnames('test.table') -> [table, integer_op, string_op];
method_fieldnames('test.table_ok') -> [integer_result, string_result];
method_fieldnames('test.content') -> [];
method_fieldnames('test.content_ok') -> [content_checksum];
method_fieldnames(Name) -> exit({unknown_method_name, Name}).
decode_method_fields('connection.start', <<F0:8/unsigned, F1:8/unsigned, F2Len:32/unsigned, F2Tab:F2Len/binary, F3Len:32/unsigned, F3:F3Len/binary, F4Len:32/unsigned, F4:F4Len/binary>>) ->
F2 = rabbit_binary_parser:parse_table(F2Tab),
#'connection.start'{version_major = F0, version_minor = F1, server_properties = F2, mechanisms = F3, locales = F4};
decode_method_fields('connection.start_ok', <<F0Len:32/unsigned, F0Tab:F0Len/binary, F1Len:8/unsigned, F1:F1Len/binary, F2Len:32/unsigned, F2:F2Len/binary, F3Len:8/unsigned, F3:F3Len/binary>>) ->
F0 = rabbit_binary_parser:parse_table(F0Tab),
#'connection.start_ok'{client_properties = F0, mechanism = F1, response = F2, locale = F3};
decode_method_fields('connection.secure', <<F0Len:32/unsigned, F0:F0Len/binary>>) ->
#'connection.secure'{challenge = F0};
decode_method_fields('connection.secure_ok', <<F0Len:32/unsigned, F0:F0Len/binary>>) ->
#'connection.secure_ok'{response = F0};
decode_method_fields('connection.tune', <<F0:16/unsigned, F1:32/unsigned, F2:16/unsigned>>) ->
#'connection.tune'{channel_max = F0, frame_max = F1, heartbeat = F2};
decode_method_fields('connection.tune_ok', <<F0:16/unsigned, F1:32/unsigned, F2:16/unsigned>>) ->
#'connection.tune_ok'{channel_max = F0, frame_max = F1, heartbeat = F2};
decode_method_fields('connection.open', <<F0Len:8/unsigned, F0:F0Len/binary, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
#'connection.open'{virtual_host = F0, capabilities = F1, insist = F2};
decode_method_fields('connection.open_ok', <<F0Len:8/unsigned, F0:F0Len/binary>>) ->
#'connection.open_ok'{known_hosts = F0};
decode_method_fields('connection.redirect', <<F0Len:8/unsigned, F0:F0Len/binary, F1Len:8/unsigned, F1:F1Len/binary>>) ->
#'connection.redirect'{host = F0, known_hosts = F1};
decode_method_fields('connection.close', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2:16/unsigned, F3:16/unsigned>>) ->
#'connection.close'{reply_code = F0, reply_text = F1, class_id = F2, method_id = F3};
decode_method_fields('connection.close_ok', <<>>) ->
#'connection.close_ok'{};
decode_method_fields('channel.open', <<F0Len:8/unsigned, F0:F0Len/binary>>) ->
#'channel.open'{out_of_band = F0};
decode_method_fields('channel.open_ok', <<>>) ->
#'channel.open_ok'{};
decode_method_fields('channel.flow', <<F0Bits:8>>) ->
F0 = ((F0Bits band 1) /= 0),
#'channel.flow'{active = F0};
decode_method_fields('channel.flow_ok', <<F0Bits:8>>) ->
F0 = ((F0Bits band 1) /= 0),
#'channel.flow_ok'{active = F0};
decode_method_fields('channel.alert', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:32/unsigned, F2Tab:F2Len/binary>>) ->
F2 = rabbit_binary_parser:parse_table(F2Tab),
#'channel.alert'{reply_code = F0, reply_text = F1, details = F2};
decode_method_fields('channel.close', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2:16/unsigned, F3:16/unsigned>>) ->
#'channel.close'{reply_code = F0, reply_text = F1, class_id = F2, method_id = F3};
decode_method_fields('channel.close_ok', <<>>) ->
#'channel.close_ok'{};
decode_method_fields('access.request', <<F0Len:8/unsigned, F0:F0Len/binary, F1Bits:8>>) ->
F1 = ((F1Bits band 1) /= 0),
F2 = ((F1Bits band 2) /= 0),
F3 = ((F1Bits band 4) /= 0),
F4 = ((F1Bits band 8) /= 0),
F5 = ((F1Bits band 16) /= 0),
#'access.request'{realm = F0, exclusive = F1, passive = F2, active = F3, write = F4, read = F5};
decode_method_fields('access.request_ok', <<F0:16/unsigned>>) ->
#'access.request_ok'{ticket = F0};
decode_method_fields('exchange.declare', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Bits:8, F8Len:32/unsigned, F8Tab:F8Len/binary>>) ->
F3 = ((F3Bits band 1) /= 0),
F4 = ((F3Bits band 2) /= 0),
F5 = ((F3Bits band 4) /= 0),
F6 = ((F3Bits band 8) /= 0),
F7 = ((F3Bits band 16) /= 0),
F8 = rabbit_binary_parser:parse_table(F8Tab),
#'exchange.declare'{ticket = F0, exchange = F1, type = F2, passive = F3, durable = F4, auto_delete = F5, internal = F6, nowait = F7, arguments = F8};
decode_method_fields('exchange.declare_ok', <<>>) ->
#'exchange.declare_ok'{};
decode_method_fields('exchange.delete', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
F3 = ((F2Bits band 2) /= 0),
#'exchange.delete'{ticket = F0, exchange = F1, if_unused = F2, nowait = F3};
decode_method_fields('exchange.delete_ok', <<>>) ->
#'exchange.delete_ok'{};
decode_method_fields('queue.declare', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8, F7Len:32/unsigned, F7Tab:F7Len/binary>>) ->
F2 = ((F2Bits band 1) /= 0),
F3 = ((F2Bits band 2) /= 0),
F4 = ((F2Bits band 4) /= 0),
F5 = ((F2Bits band 8) /= 0),
F6 = ((F2Bits band 16) /= 0),
F7 = rabbit_binary_parser:parse_table(F7Tab),
#'queue.declare'{ticket = F0, queue = F1, passive = F2, durable = F3, exclusive = F4, auto_delete = F5, nowait = F6, arguments = F7};
decode_method_fields('queue.declare_ok', <<F0Len:8/unsigned, F0:F0Len/binary, F1:32/unsigned, F2:32/unsigned>>) ->
#'queue.declare_ok'{queue = F0, message_count = F1, consumer_count = F2};
decode_method_fields('queue.bind', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Len:8/unsigned, F3:F3Len/binary, F4Bits:8, F5Len:32/unsigned, F5Tab:F5Len/binary>>) ->
F4 = ((F4Bits band 1) /= 0),
F5 = rabbit_binary_parser:parse_table(F5Tab),
#'queue.bind'{ticket = F0, queue = F1, exchange = F2, routing_key = F3, nowait = F4, arguments = F5};
decode_method_fields('queue.bind_ok', <<>>) ->
#'queue.bind_ok'{};
decode_method_fields('queue.purge', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
#'queue.purge'{ticket = F0, queue = F1, nowait = F2};
decode_method_fields('queue.purge_ok', <<F0:32/unsigned>>) ->
#'queue.purge_ok'{message_count = F0};
decode_method_fields('queue.delete', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
F3 = ((F2Bits band 2) /= 0),
F4 = ((F2Bits band 4) /= 0),
#'queue.delete'{ticket = F0, queue = F1, if_unused = F2, if_empty = F3, nowait = F4};
decode_method_fields('queue.delete_ok', <<F0:32/unsigned>>) ->
#'queue.delete_ok'{message_count = F0};
decode_method_fields('queue.unbind', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Len:8/unsigned, F3:F3Len/binary, F4Len:32/unsigned, F4Tab:F4Len/binary>>) ->
F4 = rabbit_binary_parser:parse_table(F4Tab),
#'queue.unbind'{ticket = F0, queue = F1, exchange = F2, routing_key = F3, arguments = F4};
decode_method_fields('queue.unbind_ok', <<>>) ->
#'queue.unbind_ok'{};
decode_method_fields('basic.qos', <<F0:32/unsigned, F1:16/unsigned, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
#'basic.qos'{prefetch_size = F0, prefetch_count = F1, global = F2};
decode_method_fields('basic.qos_ok', <<>>) ->
#'basic.qos_ok'{};
decode_method_fields('basic.consume', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Bits:8>>) ->
F3 = ((F3Bits band 1) /= 0),
F4 = ((F3Bits band 2) /= 0),
F5 = ((F3Bits band 4) /= 0),
F6 = ((F3Bits band 8) /= 0),
#'basic.consume'{ticket = F0, queue = F1, consumer_tag = F2, no_local = F3, no_ack = F4, exclusive = F5, nowait = F6};
decode_method_fields('basic.consume_ok', <<F0Len:8/unsigned, F0:F0Len/binary>>) ->
#'basic.consume_ok'{consumer_tag = F0};
decode_method_fields('basic.cancel', <<F0Len:8/unsigned, F0:F0Len/binary, F1Bits:8>>) ->
F1 = ((F1Bits band 1) /= 0),
#'basic.cancel'{consumer_tag = F0, nowait = F1};
decode_method_fields('basic.cancel_ok', <<F0Len:8/unsigned, F0:F0Len/binary>>) ->
#'basic.cancel_ok'{consumer_tag = F0};
decode_method_fields('basic.publish', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Bits:8>>) ->
F3 = ((F3Bits band 1) /= 0),
F4 = ((F3Bits band 2) /= 0),
#'basic.publish'{ticket = F0, exchange = F1, routing_key = F2, mandatory = F3, immediate = F4};
decode_method_fields('basic.return', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Len:8/unsigned, F2:F2Len/binary, F3Len:8/unsigned, F3:F3Len/binary>>) ->
#'basic.return'{reply_code = F0, reply_text = F1, exchange = F2, routing_key = F3};
decode_method_fields('basic.deliver', <<F0Len:8/unsigned, F0:F0Len/binary, F1:64/unsigned, F2Bits:8, F3Len:8/unsigned, F3:F3Len/binary, F4Len:8/unsigned, F4:F4Len/binary>>) ->
F2 = ((F2Bits band 1) /= 0),
#'basic.deliver'{consumer_tag = F0, delivery_tag = F1, redelivered = F2, exchange = F3, routing_key = F4};
decode_method_fields('basic.get', <<F0:16/unsigned, F1Len:8/unsigned, F1:F1Len/binary, F2Bits:8>>) ->
F2 = ((F2Bits band 1) /= 0),
#'basic.get'{ticket = F0, queue = F1, no_ack = F2};
decode_method_fields('basic.get_ok', <<F0:64/unsigned, F1Bits:8, F2Len:8/unsigned, F2:F2Len/binary, F3Len:8/unsigned, F3:F3Len/binary, F4:32/unsigned>>) ->
F1 = ((F1Bits band 1) /= 0),
#'basic.get_ok'{delivery_tag = F0, redelivered = F1, exchange = F2, routing_key = F3, message_count = F4};
decode_method_fields('basic.get_empty', <<F0Len:8/unsigned, F0:F0Len/binary>>) ->
#'basic.get_empty'{cluster_id = F0};
decode_method_fields('basic.ack', <<F0:64/unsigned, F1Bits:8>>) ->
F1 = ((F1Bits band 1) /= 0),
#'basic.ack'{delivery_tag = F0, multiple = F1};
decode_method_fields('basic.reject', <<F0:64/unsigned, F1Bits:8>>) ->
F1 = ((F1Bits band 1) /= 0),
#'basic.reject'{delivery_tag = F0, requeue = F1};
decode_method_fields('basic.recover_async', <<F0Bits:8>>) ->
F0 = ((F0Bits band 1) /= 0),
#'basic.recover_async'{requeue = F0};
decode_method_fields('basic.recover', <<F0Bits:8>>) ->
F0 = ((F0Bits band 1) /= 0),
#'basic.recover'{requeue = F0};
decode_method_fields('basic.recover_ok', <<>>) ->