lib/amq/protocol/client.rb in amq-protocol-0.9.0 vs lib/amq/protocol/client.rb in amq-protocol-0.9.1

- old
+ new

@@ -15,22 +15,24 @@ DEFAULT_PORT = 5672 # caching EMPTY_STRING = "".freeze - PACK_CHAR = "C".freeze - PACK_UINT16 = "n".freeze - PACK_UINT16_X2 = "n2".freeze - PACK_UINT32 = "N".freeze - PACK_UINT32_X2 = "N2".freeze - PACK_INT64 = "q".freeze - PACK_UCHAR_UINT32 = "CN".freeze - PACK_CHAR_UINT16_UINT32 = "cnN".freeze + PACK_CHAR = 'C'.freeze + PACK_UINT16 = 'n'.freeze + PACK_UINT16_X2 = 'n2'.freeze + PACK_UINT32 = 'N'.freeze + PACK_UINT32_X2 = 'N2'.freeze + PACK_INT64 = 'q'.freeze + PACK_UCHAR_UINT32 = 'CN'.freeze + PACK_CHAR_UINT16_UINT32 = 'cnN'.freeze - PACK_32BIT_FLOAT = "f".freeze - PACK_64BIT_FLOAT = "d".freeze + PACK_32BIT_FLOAT = 'f'.freeze + PACK_64BIT_FLOAT = 'd'.freeze + + # @return [Array] Collection of subclasses of AMQ::Protocol::Class. def self.classes Protocol::Class.classes end @@ -166,23 +168,24 @@ class InternalError < HardError VALUE = 541 end - # We don"t instantiate the following classes, - # as we don"t actually need any per-instance state. + + # We don't instantiate the following classes, + # as we don't actually need any per-instance state. # Also, this is pretty low-level functionality, # hence it should have a reasonable performance. # As everyone knows, garbage collector in MRI performs # really badly, which is another good reason for # not creating any objects, but only use class as # a struct. Creating classes is quite expensive though, # but here the inheritance comes handy and mainly - # as we can"t simply make a reference to a function, - # we can"t use a hash or an object. I"ve been also + # as we can't simply make a reference to a function, + # we can't use a hash or an object. I've been also # considering to have just a bunch of methods, but - # here"s the problem, that after we"d require this file, + # here's the problem, that after we'd require this file, # all these methods would become global which would # be a bad, bad thing to do. class Class @classes = Array.new @@ -246,15 +249,14 @@ def self.encode_body(body, channel, frame_size) return [] if body.empty? # See https://dev.rabbitmq.com/wiki/Amqp091Errata#section_11 limit = frame_size - 8 - limit_plus_1 = limit + 1 array = Array.new while body - payload, body = body[0, limit_plus_1], body[limit_plus_1, body.length - limit] + payload, body = body[0, limit], body[limit, body.length - limit] # array << [0x03, payload] array << BodyFrame.new(payload, channel) end array @@ -276,10 +278,12 @@ class Connection < Protocol::Class @name = "connection" @method_id = 10 + + class Start < Protocol::Method @name = "connection.start" @method_id = 10 @index = 0x000A000A # 10, 10, 655370 @packed_indexes = [10, 10].pack(PACK_UINT16_X2).freeze @@ -315,37 +319,41 @@ end def self.has_content? false end + + end class StartOk < Protocol::Method @name = "connection.start-ok" @method_id = 11 @index = 0x000A000B # 10, 11, 655371 @packed_indexes = [10, 11].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["client_properties = nil", "mechanism = "PLAIN"", "response = nil", "locale = "en_US""] + # [u'client_properties = nil', u"mechanism = u'PLAIN'", u'response = nil', u"locale = u'en_US'"] def self.encode(client_properties, mechanism, response, locale) channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << AMQ::Protocol::Table.encode(client_properties) buffer << mechanism.bytesize.chr buffer << mechanism buffer << [response.bytesize].pack(PACK_UINT32) buffer << response buffer << locale.bytesize.chr buffer << locale MethodFrame.new(buffer, channel) end + end class Secure < Protocol::Method @name = "connection.secure" @method_id = 20 @@ -368,32 +376,36 @@ end def self.has_content? false end + + end class SecureOk < Protocol::Method @name = "connection.secure-ok" @method_id = 21 @index = 0x000A0015 # 10, 21, 655381 @packed_indexes = [10, 21].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["response = nil"] + # [u'response = nil'] def self.encode(response) channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [response.bytesize].pack(PACK_UINT32) buffer << response MethodFrame.new(buffer, channel) end + end class Tune < Protocol::Method @name = "connection.tune" @method_id = 30 @@ -420,62 +432,68 @@ end def self.has_content? false end + + end class TuneOk < Protocol::Method @name = "connection.tune-ok" @method_id = 31 @index = 0x000A001F # 10, 31, 655391 @packed_indexes = [10, 31].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["channel_max = false", "frame_max = false", "heartbeat = false"] + # [u'channel_max = false', u'frame_max = false', u'heartbeat = false'] def self.encode(channel_max, frame_max, heartbeat) channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [channel_max].pack(PACK_UINT16) buffer << [frame_max].pack(PACK_UINT32) buffer << [heartbeat].pack(PACK_UINT16) MethodFrame.new(buffer, channel) end + end class Open < Protocol::Method @name = "connection.open" @method_id = 40 @index = 0x000A0028 # 10, 40, 655400 @packed_indexes = [10, 40].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["virtual_host = "/"", "capabilities = EMPTY_STRING", "insist = false"] + # [u"virtual_host = u'/'", u'capabilities = EMPTY_STRING', u'insist = false'] def self.encode(virtual_host) capabilities = EMPTY_STRING insist = false channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << virtual_host.bytesize.chr buffer << virtual_host buffer << capabilities.bytesize.chr buffer << capabilities bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if insist buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class OpenOk < Protocol::Method @name = "connection.open-ok" @method_id = 41 @@ -498,10 +516,12 @@ end def self.has_content? false end + + end class Close < Protocol::Method @name = "connection.close" @method_id = 50 @@ -535,22 +555,23 @@ def self.has_content? false end # @return - # ["reply_code = nil", "reply_text = EMPTY_STRING", "class_id = nil", "method_id = nil"] + # [u'reply_code = nil', u'reply_text = EMPTY_STRING', u'class_id = nil', u'method_id = nil'] def self.encode(reply_code, reply_text, class_id, method_id) channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [reply_code].pack(PACK_UINT16) buffer << reply_text.bytesize.chr buffer << reply_text buffer << [class_id].pack(PACK_UINT16) buffer << [method_id].pack(PACK_UINT16) MethodFrame.new(buffer, channel) end + end class CloseOk < Protocol::Method @name = "connection.close-ok" @method_id = 51 @@ -572,40 +593,46 @@ # @return # [] def self.encode() channel = 0 - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end + end class Channel < Protocol::Class @name = "channel" @method_id = 20 + + class Open < Protocol::Method @name = "channel.open" @method_id = 10 @index = 0x0014000A # 20, 10, 1310730 @packed_indexes = [20, 10].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["out_of_band = EMPTY_STRING"] + # [u'out_of_band = EMPTY_STRING'] def self.encode(channel, out_of_band) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << out_of_band.bytesize.chr buffer << out_of_band MethodFrame.new(buffer, channel) end + end class OpenOk < Protocol::Method @name = "channel.open-ok" @method_id = 11 @@ -628,10 +655,12 @@ end def self.has_content? false end + + end class Flow < Protocol::Method @name = "channel.flow" @method_id = 20 @@ -655,19 +684,20 @@ def self.has_content? false end # @return - # ["active = nil"] + # [u'active = nil'] def self.encode(channel, active) - buffer = "" + buffer = '' buffer << @packed_indexes bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if active buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class FlowOk < Protocol::Method @name = "channel.flow-ok" @method_id = 21 @@ -691,19 +721,20 @@ def self.has_content? false end # @return - # ["active = nil"] + # [u'active = nil'] def self.encode(channel, active) - buffer = "" + buffer = '' buffer << @packed_indexes bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if active buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class Close < Protocol::Method @name = "channel.close" @method_id = 40 @@ -737,21 +768,22 @@ def self.has_content? false end # @return - # ["reply_code = nil", "reply_text = EMPTY_STRING", "class_id = nil", "method_id = nil"] + # [u'reply_code = nil', u'reply_text = EMPTY_STRING', u'class_id = nil', u'method_id = nil'] def self.encode(channel, reply_code, reply_text, class_id, method_id) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [reply_code].pack(PACK_UINT16) buffer << reply_text.bytesize.chr buffer << reply_text buffer << [class_id].pack(PACK_UINT16) buffer << [method_id].pack(PACK_UINT16) MethodFrame.new(buffer, channel) end + end class CloseOk < Protocol::Method @name = "channel.close-ok" @method_id = 41 @@ -772,36 +804,41 @@ end # @return # [] def self.encode(channel) - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end + end class Exchange < Protocol::Class @name = "exchange" @method_id = 40 + + class Declare < Protocol::Method @name = "exchange.declare" @method_id = 10 @index = 0x0028000A # 40, 10, 2621450 @packed_indexes = [40, 10].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "exchange = nil", "type = "direct"", "passive = false", "durable = false", "auto_delete = false", "internal = false", "nowait = false", "arguments = {}"] + # [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 = {}'] def self.encode(channel, exchange, type, passive, durable, auto_delete, internal, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << exchange.bytesize.chr buffer << exchange buffer << type.bytesize.chr @@ -814,10 +851,11 @@ bit_buffer = bit_buffer | (1 << 4) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class DeclareOk < Protocol::Method @name = "exchange.declare-ok" @method_id = 11 @@ -834,37 +872,41 @@ end def self.has_content? false end + + end class Delete < Protocol::Method @name = "exchange.delete" @method_id = 20 @index = 0x00280014 # 40, 20, 2621460 @packed_indexes = [40, 20].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "exchange = nil", "if_unused = false", "nowait = false"] + # [u'ticket = 0', u'exchange = nil', u'if_unused = false', u'nowait = false'] def self.encode(channel, exchange, if_unused, nowait) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << exchange.bytesize.chr buffer << exchange bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if if_unused bit_buffer = bit_buffer | (1 << 1) if nowait buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class DeleteOk < Protocol::Method @name = "exchange.delete-ok" @method_id = 21 @@ -881,27 +923,30 @@ end def self.has_content? false end + + end class Bind < Protocol::Method @name = "exchange.bind" @method_id = 30 @index = 0x0028001E # 40, 30, 2621470 @packed_indexes = [40, 30].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "destination = nil", "source = nil", "routing_key = EMPTY_STRING", "nowait = false", "arguments = {}"] + # [u'ticket = 0', u'destination = nil', u'source = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}'] def self.encode(channel, destination, source, routing_key, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << destination.bytesize.chr buffer << destination buffer << source.bytesize.chr @@ -912,10 +957,11 @@ bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class BindOk < Protocol::Method @name = "exchange.bind-ok" @method_id = 31 @@ -932,27 +978,30 @@ end def self.has_content? false end + + end class Unbind < Protocol::Method @name = "exchange.unbind" @method_id = 40 @index = 0x00280028 # 40, 40, 2621480 @packed_indexes = [40, 40].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "destination = nil", "source = nil", "routing_key = EMPTY_STRING", "nowait = false", "arguments = {}"] + # [u'ticket = 0', u'destination = nil', u'source = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}'] def self.encode(channel, destination, source, routing_key, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << destination.bytesize.chr buffer << destination buffer << source.bytesize.chr @@ -963,10 +1012,11 @@ bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class UnbindOk < Protocol::Method @name = "exchange.unbind-ok" @method_id = 51 @@ -983,32 +1033,38 @@ end def self.has_content? false end + + end + end class Queue < Protocol::Class @name = "queue" @method_id = 50 + + class Declare < Protocol::Method @name = "queue.declare" @method_id = 10 @index = 0x0032000A # 50, 10, 3276810 @packed_indexes = [50, 10].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "passive = false", "durable = false", "exclusive = false", "auto_delete = false", "nowait = false", "arguments = {}"] + # [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 = {}'] def self.encode(channel, queue, passive, durable, exclusive, auto_delete, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue bit_buffer = 0 @@ -1019,10 +1075,11 @@ bit_buffer = bit_buffer | (1 << 4) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class DeclareOk < Protocol::Method @name = "queue.declare-ok" @method_id = 11 @@ -1051,27 +1108,30 @@ end def self.has_content? false end + + end class Bind < Protocol::Method @name = "queue.bind" @method_id = 20 @index = 0x00320014 # 50, 20, 3276820 @packed_indexes = [50, 20].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "exchange = nil", "routing_key = EMPTY_STRING", "nowait = false", "arguments = {}"] + # [u'ticket = 0', u'queue = EMPTY_STRING', u'exchange = nil', u'routing_key = EMPTY_STRING', u'nowait = false', u'arguments = {}'] def self.encode(channel, queue, exchange, routing_key, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue buffer << exchange.bytesize.chr @@ -1082,10 +1142,11 @@ bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class BindOk < Protocol::Method @name = "queue.bind-ok" @method_id = 21 @@ -1102,36 +1163,40 @@ end def self.has_content? false end + + end class Purge < Protocol::Method @name = "queue.purge" @method_id = 30 @index = 0x0032001E # 50, 30, 3276830 @packed_indexes = [50, 30].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "nowait = false"] + # [u'ticket = 0', u'queue = EMPTY_STRING', u'nowait = false'] def self.encode(channel, queue, nowait) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class PurgeOk < Protocol::Method @name = "queue.purge-ok" @method_id = 31 @@ -1152,27 +1217,30 @@ end def self.has_content? false end + + end class Delete < Protocol::Method @name = "queue.delete" @method_id = 40 @index = 0x00320028 # 50, 40, 3276840 @packed_indexes = [50, 40].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "if_unused = false", "if_empty = false", "nowait = false"] + # [u'ticket = 0', u'queue = EMPTY_STRING', u'if_unused = false', u'if_empty = false', u'nowait = false'] def self.encode(channel, queue, if_unused, if_empty, nowait) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue bit_buffer = 0 @@ -1180,10 +1248,11 @@ bit_buffer = bit_buffer | (1 << 1) if if_empty bit_buffer = bit_buffer | (1 << 2) if nowait buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class DeleteOk < Protocol::Method @name = "queue.delete-ok" @method_id = 41 @@ -1204,27 +1273,30 @@ end def self.has_content? false end + + end class Unbind < Protocol::Method @name = "queue.unbind" @method_id = 50 @index = 0x00320032 # 50, 50, 3276850 @packed_indexes = [50, 50].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "exchange = nil", "routing_key = EMPTY_STRING", "arguments = {}"] + # [u'ticket = 0', u'queue = EMPTY_STRING', u'exchange = nil', u'routing_key = EMPTY_STRING', u'arguments = {}'] def self.encode(channel, queue, exchange, routing_key, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue buffer << exchange.bytesize.chr @@ -1232,10 +1304,11 @@ buffer << routing_key.bytesize.chr buffer << routing_key buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class UnbindOk < Protocol::Method @name = "queue.unbind-ok" @method_id = 51 @@ -1252,11 +1325,14 @@ end def self.has_content? false end + + end + end class Basic < Protocol::Class @name = "basic" @method_id = 60 @@ -1278,126 +1354,128 @@ :cluster_id, # shortstr ] # 1 << 15 def self.encode_content_type(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [0, 0x8000, buffer] end # 1 << 14 def self.encode_content_encoding(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [1, 0x4000, buffer] end # 1 << 13 def self.encode_headers(value) - buffer = "" + buffer = '' buffer << AMQ::Protocol::Table.encode(value) [2, 0x2000, buffer] end # 1 << 12 def self.encode_delivery_mode(value) - buffer = "" + buffer = '' buffer << [value].pack(PACK_CHAR) [3, 0x1000, buffer] end # 1 << 11 def self.encode_priority(value) - buffer = "" + buffer = '' buffer << [value].pack(PACK_CHAR) [4, 0x0800, buffer] end # 1 << 10 def self.encode_correlation_id(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [5, 0x0400, buffer] end # 1 << 9 def self.encode_reply_to(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [6, 0x0200, buffer] end # 1 << 8 def self.encode_expiration(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [7, 0x0100, buffer] end # 1 << 7 def self.encode_message_id(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [8, 0x0080, buffer] end # 1 << 6 def self.encode_timestamp(value) - buffer = "" + buffer = '' buffer << AMQ::Hacks.pack_64_big_endian(value) [9, 0x0040, buffer] end # 1 << 5 def self.encode_type(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [10, 0x0020, buffer] end # 1 << 4 def self.encode_user_id(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [11, 0x0010, buffer] end # 1 << 3 def self.encode_app_id(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [12, 0x0008, buffer] end # 1 << 2 def self.encode_cluster_id(value) - buffer = "" + buffer = '' buffer << value.bytesize.chr buffer << value [13, 0x0004, buffer] end + + def self.encode_properties(body_size, properties) pieces, flags = [], 0 properties.each do |key, value| i, f, result = self.send(:"encode_#{key}", value) flags |= f pieces[i] = result end - # result = [60, 0, body_size, flags].pack("n2Qn") + # result = [60, 0, body_size, flags].pack('n2Qn') result = [60, 0].pack(PACK_UINT16_X2) result += AMQ::Hacks.pack_64_big_endian(body_size) result += [flags].pack(PACK_UINT16) result + pieces.join(EMPTY_STRING) end @@ -1435,11 +1513,11 @@ 0x0010 => :shortstr, 0x0008 => :shortstr, 0x0004 => :shortstr, } - # Hash doesn"t give any guarantees on keys order, we will do it in a + # Hash doesn't give any guarantees on keys order, we will do it in a # straightforward way DECODE_PROPERTIES_KEYS = [ 0x8000, 0x4000, 0x2000, @@ -1493,26 +1571,28 @@ @name = "basic.qos" @method_id = 10 @index = 0x003C000A # 60, 10, 3932170 @packed_indexes = [60, 10].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["prefetch_size = false", "prefetch_count = false", "global = false"] + # [u'prefetch_size = false', u'prefetch_count = false', u'global = false'] def self.encode(channel, prefetch_size, prefetch_count, global) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [prefetch_size].pack(PACK_UINT32) buffer << [prefetch_count].pack(PACK_UINT16) bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if global buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class QosOk < Protocol::Method @name = "basic.qos-ok" @method_id = 11 @@ -1529,27 +1609,30 @@ end def self.has_content? false end + + end class Consume < Protocol::Method @name = "basic.consume" @method_id = 20 @index = 0x003C0014 # 60, 20, 3932180 @packed_indexes = [60, 20].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "consumer_tag = EMPTY_STRING", "no_local = false", "no_ack = false", "exclusive = false", "nowait = false", "arguments = {}"] + # [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 = {}'] def self.encode(channel, queue, consumer_tag, no_local, no_ack, exclusive, nowait, arguments) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue buffer << consumer_tag.bytesize.chr @@ -1561,10 +1644,11 @@ bit_buffer = bit_buffer | (1 << 3) if nowait buffer << [bit_buffer].pack(PACK_CHAR) buffer << AMQ::Protocol::Table.encode(arguments) MethodFrame.new(buffer, channel) end + end class ConsumeOk < Protocol::Method @name = "basic.consume-ok" @method_id = 21 @@ -1587,34 +1671,38 @@ end def self.has_content? false end + + end class Cancel < Protocol::Method @name = "basic.cancel" @method_id = 30 @index = 0x003C001E # 60, 30, 3932190 @packed_indexes = [60, 30].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["consumer_tag = nil", "nowait = false"] + # [u'consumer_tag = nil', u'nowait = false'] def self.encode(channel, consumer_tag, nowait) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << consumer_tag.bytesize.chr buffer << consumer_tag bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class CancelOk < Protocol::Method @name = "basic.cancel-ok" @method_id = 31 @@ -1637,27 +1725,30 @@ end def self.has_content? false end + + end class Publish < Protocol::Method @name = "basic.publish" @method_id = 40 @index = 0x003C0028 # 60, 40, 3932200 @packed_indexes = [60, 40].pack(PACK_UINT16_X2).freeze + def self.has_content? true end # @return - # ["ticket = 0", "exchange = EMPTY_STRING", "routing_key = EMPTY_STRING", "mandatory = false", "immediate = false", "user_headers = nil", "payload = """, "frame_size = nil"] + # [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'] def self.encode(channel, payload, user_headers, exchange, routing_key, mandatory, immediate, frame_size) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << exchange.bytesize.chr buffer << exchange buffer << routing_key.bytesize.chr @@ -1674,10 +1765,11 @@ end properties_payload = Basic.encode_properties(payload.bytesize, properties) frames << HeaderFrame.new(properties_payload, channel) frames + self.encode_body(payload, channel, frame_size) end + end class Return < Protocol::Method @name = "basic.return" @method_id = 50 @@ -1713,10 +1805,12 @@ end def self.has_content? true end + + end class Deliver < Protocol::Method @name = "basic.deliver" @method_id = 60 @@ -1756,36 +1850,40 @@ end def self.has_content? true end + + end class Get < Protocol::Method @name = "basic.get" @method_id = 70 @index = 0x003C0046 # 60, 70, 3932230 @packed_indexes = [60, 70].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["ticket = 0", "queue = EMPTY_STRING", "no_ack = false"] + # [u'ticket = 0', u'queue = EMPTY_STRING', u'no_ack = false'] def self.encode(channel, queue, no_ack) ticket = 0 - buffer = "" + buffer = '' buffer << @packed_indexes buffer << [ticket].pack(PACK_UINT16) buffer << queue.bytesize.chr buffer << queue bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if no_ack buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class GetOk < Protocol::Method @name = "basic.get-ok" @method_id = 71 @@ -1823,10 +1921,12 @@ end def self.has_content? true end + + end class GetEmpty < Protocol::Method @name = "basic.get-empty" @method_id = 72 @@ -1849,10 +1949,12 @@ end def self.has_content? false end + + end class Ack < Protocol::Method @name = "basic.ack" @method_id = 80 @@ -1879,87 +1981,94 @@ def self.has_content? false end # @return - # ["delivery_tag = false", "multiple = false"] + # [u'delivery_tag = false', u'multiple = false'] def self.encode(channel, delivery_tag, multiple) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag) bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if multiple buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class Reject < Protocol::Method @name = "basic.reject" @method_id = 90 @index = 0x003C005A # 60, 90, 3932250 @packed_indexes = [60, 90].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["delivery_tag = nil", "requeue = true"] + # [u'delivery_tag = nil', u'requeue = true'] def self.encode(channel, delivery_tag, requeue) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag) bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if requeue buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class RecoverAsync < Protocol::Method @name = "basic.recover-async" @method_id = 100 @index = 0x003C0064 # 60, 100, 3932260 @packed_indexes = [60, 100].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["requeue = false"] + # [u'requeue = false'] def self.encode(channel, requeue) - buffer = "" + buffer = '' buffer << @packed_indexes bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if requeue buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class Recover < Protocol::Method @name = "basic.recover" @method_id = 110 @index = 0x003C006E # 60, 110, 3932270 @packed_indexes = [60, 110].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return - # ["requeue = false"] + # [u'requeue = false'] def self.encode(channel, requeue) - buffer = "" + buffer = '' buffer << @packed_indexes bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if requeue buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class RecoverOk < Protocol::Method @name = "basic.recover-ok" @method_id = 111 @@ -1976,10 +2085,12 @@ end def self.has_content? false end + + end class Nack < Protocol::Method @name = "basic.nack" @method_id = 120 @@ -2008,45 +2119,51 @@ def self.has_content? false end # @return - # ["delivery_tag = false", "multiple = false", "requeue = true"] + # [u'delivery_tag = false', u'multiple = false', u'requeue = true'] def self.encode(channel, delivery_tag, multiple, requeue) - buffer = "" + buffer = '' buffer << @packed_indexes buffer << AMQ::Hacks.pack_64_big_endian(delivery_tag) bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if multiple bit_buffer = bit_buffer | (1 << 1) if requeue buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end + end class Tx < Protocol::Class @name = "tx" @method_id = 90 + + class Select < Protocol::Method @name = "tx.select" @method_id = 10 @index = 0x005A000A # 90, 10, 5898250 @packed_indexes = [90, 10].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return # [] def self.encode(channel) - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end class SelectOk < Protocol::Method @name = "tx.select-ok" @method_id = 11 @@ -2063,29 +2180,33 @@ end def self.has_content? false end + + end class Commit < Protocol::Method @name = "tx.commit" @method_id = 20 @index = 0x005A0014 # 90, 20, 5898260 @packed_indexes = [90, 20].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return # [] def self.encode(channel) - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end class CommitOk < Protocol::Method @name = "tx.commit-ok" @method_id = 21 @@ -2102,29 +2223,33 @@ end def self.has_content? false end + + end class Rollback < Protocol::Method @name = "tx.rollback" @method_id = 30 @index = 0x005A001E # 90, 30, 5898270 @packed_indexes = [90, 30].pack(PACK_UINT16_X2).freeze + def self.has_content? false end # @return # [] def self.encode(channel) - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end class RollbackOk < Protocol::Method @name = "tx.rollback-ok" @method_id = 31 @@ -2141,17 +2266,22 @@ end def self.has_content? false end + + end + end class Confirm < Protocol::Class @name = "confirm" @method_id = 85 + + class Select < Protocol::Method @name = "confirm.select" @method_id = 10 @index = 0x0055000A # 85, 10, 5570570 @packed_indexes = [85, 10].pack(PACK_UINT16_X2).freeze @@ -2173,19 +2303,20 @@ def self.has_content? false end # @return - # ["nowait = false"] + # [u'nowait = false'] def self.encode(channel, nowait) - buffer = "" + buffer = '' buffer << @packed_indexes bit_buffer = 0 bit_buffer = bit_buffer | (1 << 0) if nowait buffer << [bit_buffer].pack(PACK_CHAR) MethodFrame.new(buffer, channel) end + end class SelectOk < Protocol::Method @name = "confirm.select-ok" @method_id = 11 @@ -2206,19 +2337,23 @@ end # @return # [] def self.encode(channel) - buffer = "" + buffer = '' buffer << @packed_indexes MethodFrame.new(buffer, channel) end + end + end + METHODS = begin Method.methods.inject(Hash.new) do |hash, klass| hash.merge!(klass.index => klass) end end end end +