lib/amq/protocol.rb in amq-protocol-0.0.1.pre vs lib/amq/protocol.rb in amq-protocol-0.5.0
- old
+ new
@@ -1,1473 +1,4 @@
-# encoding: binary
+# -*- coding: utf-8 -*-
-# THIS IS AN AUTOGENERATED FILE, DO NOT MODIFY
-# IT DIRECTLY ! FOR CHANGES, PLEASE UPDATE CODEGEN.PY
-# IN THE ROOT DIRECTORY OF THE AMQP-PROTOCOL REPOSITORY.
-
-require_relative "protocol/table.rb"
-require_relative "protocol/frame.rb"
-
-module AMQ
- module Protocol
- PROTOCOL_VERSION = "0.9.1"
- PREAMBLE = "AMQP\x00\x00\x09\x01"
- DEFAULT_PORT = 5672
-
- # caching
- EMPTY_STRING = "".freeze
-
- # @version 0.0.1
- # @return [Array] Collection of subclasses of AMQ::Protocol::Class.
- def self.classes
- Class.classes
- end
-
- # @version 0.0.1
- # @return [Array] Collection of subclasses of AMQ::Protocol::Method.
- def self.methods
- Method.methods
- end
-
- class Error < StandardError
- def initialize(message = "AMQP error")
- super(message)
- end
- end
-
- class ConnectionError < Error
- def initialize(types)
- super("Must be one of #{types.inspect}")
- end
- end
-
- # 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
- # considering to have just a bunch of methods, but
- # 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
-
- def self.method
- @method
- end
-
- def self.name
- @name
- end
-
- def self.inherited(base)
- if self == Class
- @@classes << base
- end
- end
-
- def self.classes
- @@classes
- end
- end
-
- class Method
- @@methods = Array.new
- def self.method
- @method
- end
-
- def self.name
- @name
- end
-
- def self.index
- @index
- end
-
- def self.inherited(base)
- if self == Method
- @@methods << base
- end
- end
-
- def self.methods
- @@methods
- end
-
- def self.split_headers(user_headers, properties_set)
- properties, headers = {}, {}
- user_headers.iteritems.each do |key, value|
- if properties_set.has_key?(key)
- properties[key] = value
- else
- headers[key] = value
- end
- end
-
- return props, headers
- end
-
- def self.encode_body(body, frame_size)
- # Spec is broken: Our errata says that it does define
- # something, but it just doesn"t relate do method and
- # properties frames. Which makes it, well, suboptimal.
- # https://dev.rabbitmq.com/wiki/Amqp091Errata#section_11
- limit = frame_size - 7 - 1
-
- Array.new.tap do |array|
- while body
- payload, body = body[0..limit], body[limit..-1]
- array << [0x03, payload]
- end
- end
- end
-
- # We can return different:
- # - instantiate given subclass of Method
- # - create an OpenStruct object
- # - create a hash
- # - yield params into the block rather than just return
- # @api plugin
- def self.instantiate(*args, &block)
- self.new(*args, &block)
- # or OpenStruct.new(args.first)
- # or args.first
- # or block.call(*args)
- end
- end
-
- class Connection < Class
- @name = "connection"
- @method = 10
-
- class Start < Method
- @name = "connection.start"
- @method = 10
- @index = 0x000A000A # 10, 10, 655370
-
- # @return
- def self.decode(data)
- offset = 0
- version_major = data[offset...(offset + 1)].unpack("c").first
- offset += 1
- version_minor = data[offset...(offset + 1)].unpack("c").first
- offset += 1
- table_length = Table.length(data[offset..(offset + 4)])
- server_properties = Table.decode(data[offset..table_length])
- length = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- mechanisms = data[offset..(offset + length)]
- offset += length
- length = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- locales = data[offset..(offset + length)]
- offset += length
- self.new(version_major, version_minor, server_properties, mechanisms, locales)
- end
-
- attr_reader :version_major, :version_minor, :server_properties, :mechanisms, :locales
- def initialize(version_major, version_minor, server_properties, mechanisms, locales)
- @version_major = version_major
- @version_minor = version_minor
- @server_properties = server_properties
- @mechanisms = mechanisms
- @locales = locales
- end
- end
-
- class StartOk < Method
- @name = "connection.start-ok"
- @method = 11
- @index = 0x000A000B # 10, 11, 655371
-
- # @return
- # ["client_properties = nil", "mechanism = "PLAIN"", "response = nil", "locale = "en_US""]
- def self.encode(client_properties, mechanism, response, locale)
- pieces = []
- pieces << [10, 11].pack("n2")
- pieces << AMQ::Protocol::Table.encode(client_properties)
- pieces << mechanism.bytesize.chr
- pieces << mechanism
- pieces << [response.bytesize].pack("N")
- pieces << response
- pieces << locale.bytesize.chr
- pieces << locale
- pieces.join("")
- end
- end
-
- class Secure < Method
- @name = "connection.secure"
- @method = 20
- @index = 0x000A0014 # 10, 20, 655380
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- challenge = data[offset..(offset + length)]
- offset += length
- self.new(challenge)
- end
-
- attr_reader :challenge
- def initialize(challenge)
- @challenge = challenge
- end
- end
-
- class SecureOk < Method
- @name = "connection.secure-ok"
- @method = 21
- @index = 0x000A0015 # 10, 21, 655381
-
- # @return
- # ["response = nil"]
- def self.encode(response)
- pieces = []
- pieces << [10, 21].pack("n2")
- pieces << [response.bytesize].pack("N")
- pieces << response
- pieces.join("")
- end
- end
-
- class Tune < Method
- @name = "connection.tune"
- @method = 30
- @index = 0x000A001E # 10, 30, 655390
-
- # @return
- def self.decode(data)
- offset = 0
- channel_max = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- frame_max = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- heartbeat = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- self.new(channel_max, frame_max, heartbeat)
- end
-
- attr_reader :channel_max, :frame_max, :heartbeat
- def initialize(channel_max, frame_max, heartbeat)
- @channel_max = channel_max
- @frame_max = frame_max
- @heartbeat = heartbeat
- end
- end
-
- class TuneOk < Method
- @name = "connection.tune-ok"
- @method = 31
- @index = 0x000A001F # 10, 31, 655391
-
- # @return
- # ["channel_max = false", "frame_max = false", "heartbeat = false"]
- def self.encode(channel_max, frame_max, heartbeat)
- pieces = []
- pieces << [10, 31].pack("n2")
- pieces << [channel_max].pack("n")
- pieces << [frame_max].pack("N")
- pieces << [heartbeat].pack("n")
- pieces.join("")
- end
- end
-
- class Open < Method
- @name = "connection.open"
- @method = 40
- @index = 0x000A0028 # 10, 40, 655400
-
- # @return
- # ["virtual_host = "/"", "capabilities = """, "insist = false"]
- def self.encode(virtual_host, capabilities, insist)
- pieces = []
- pieces << [10, 40].pack("n2")
- pieces << virtual_host.bytesize.chr
- pieces << virtual_host
- pieces << capabilities.bytesize.chr
- pieces << capabilities
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if insist
- pieces.join("")
- end
- end
-
- class OpenOk < Method
- @name = "connection.open-ok"
- @method = 41
- @index = 0x000A0029 # 10, 41, 655401
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- known_hosts = data[offset..(offset + length)]
- offset += length
- self.new(known_hosts)
- end
-
- attr_reader :known_hosts
- def initialize(known_hosts)
- @known_hosts = known_hosts
- end
- end
-
- class Close < Method
- @name = "connection.close"
- @method = 50
- @index = 0x000A0032 # 10, 50, 655410
-
- # @return
- def self.decode(data)
- offset = 0
- reply_code = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- reply_text = data[offset..(offset + length)]
- offset += length
- class_id = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- method_id = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- self.new(reply_code, reply_text, class_id, method_id)
- end
-
- attr_reader :reply_code, :reply_text, :class_id, :method_id
- def initialize(reply_code, reply_text, class_id, method_id)
- @reply_code = reply_code
- @reply_text = reply_text
- @class_id = class_id
- @method_id = method_id
- end
-
- # @return
- # ["reply_code = nil", "reply_text = """, "class_id = nil", "method_id = nil"]
- def self.encode(reply_code, reply_text, class_id, method_id)
- pieces = []
- pieces << [10, 50].pack("n2")
- pieces << [reply_code].pack("n")
- pieces << reply_text.bytesize.chr
- pieces << reply_text
- pieces << [class_id].pack("n")
- pieces << [method_id].pack("n")
- pieces.join("")
- end
- end
-
- class CloseOk < Method
- @name = "connection.close-ok"
- @method = 51
- @index = 0x000A0033 # 10, 51, 655411
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
-
- # @return
- # []
- def self.encode()
- pieces = []
- pieces << [10, 51].pack("n2")
- pieces.join("")
- end
- end
- end
-
- class Channel < Class
- @name = "channel"
- @method = 20
-
- class Open < Method
- @name = "channel.open"
- @method = 10
- @index = 0x0014000A # 20, 10, 1310730
-
- # @return
- # ["out_of_band = """]
- def self.encode(out_of_band)
- pieces = []
- pieces << [20, 10].pack("n2")
- pieces << out_of_band.bytesize.chr
- pieces << out_of_band
- pieces.join("")
- end
- end
-
- class OpenOk < Method
- @name = "channel.open-ok"
- @method = 11
- @index = 0x0014000B # 20, 11, 1310731
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- channel_id = data[offset..(offset + length)]
- offset += length
- self.new(channel_id)
- end
-
- attr_reader :channel_id
- def initialize(channel_id)
- @channel_id = channel_id
- end
- end
-
- class Flow < Method
- @name = "channel.flow"
- @method = 20
- @index = 0x00140014 # 20, 20, 1310740
-
- # @return
- def self.decode(data)
- offset = 0
- bit_buffer = data[offset..(offset + 1)].unpack("c").first
- offset += 1
- active = (bit_buffer & (1 << 0)) != 0
- self.new(active)
- end
-
- attr_reader :active
- def initialize(active)
- @active = active
- end
-
- # @return
- # ["active = nil"]
- def self.encode(active)
- pieces = []
- pieces << [20, 20].pack("n2")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if active
- pieces.join("")
- end
- end
-
- class FlowOk < Method
- @name = "channel.flow-ok"
- @method = 21
- @index = 0x00140015 # 20, 21, 1310741
-
- # @return
- def self.decode(data)
- offset = 0
- bit_buffer = data[offset..(offset + 1)].unpack("c").first
- offset += 1
- active = (bit_buffer & (1 << 0)) != 0
- self.new(active)
- end
-
- attr_reader :active
- def initialize(active)
- @active = active
- end
-
- # @return
- # ["active = nil"]
- def self.encode(active)
- pieces = []
- pieces << [20, 21].pack("n2")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if active
- pieces.join("")
- end
- end
-
- class Close < Method
- @name = "channel.close"
- @method = 40
- @index = 0x00140028 # 20, 40, 1310760
-
- # @return
- def self.decode(data)
- offset = 0
- reply_code = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- reply_text = data[offset..(offset + length)]
- offset += length
- class_id = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- method_id = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- self.new(reply_code, reply_text, class_id, method_id)
- end
-
- attr_reader :reply_code, :reply_text, :class_id, :method_id
- def initialize(reply_code, reply_text, class_id, method_id)
- @reply_code = reply_code
- @reply_text = reply_text
- @class_id = class_id
- @method_id = method_id
- end
-
- # @return
- # ["reply_code = nil", "reply_text = """, "class_id = nil", "method_id = nil"]
- def self.encode(reply_code, reply_text, class_id, method_id)
- pieces = []
- pieces << [20, 40].pack("n2")
- pieces << [reply_code].pack("n")
- pieces << reply_text.bytesize.chr
- pieces << reply_text
- pieces << [class_id].pack("n")
- pieces << [method_id].pack("n")
- pieces.join("")
- end
- end
-
- class CloseOk < Method
- @name = "channel.close-ok"
- @method = 41
- @index = 0x00140029 # 20, 41, 1310761
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
-
- # @return
- # []
- def self.encode()
- pieces = []
- pieces << [20, 41].pack("n2")
- pieces.join("")
- end
- end
- end
-
- class Exchange < Class
- @name = "exchange"
- @method = 40
-
- class Declare < Method
- @name = "exchange.declare"
- @method = 10
- @index = 0x0028000A # 40, 10, 2621450
-
- # @return
- # ["ticket = false", "exchange = nil", "type = "direct"", "passive = false", "durable = false", "auto_delete = false", "internal = false", "nowait = false", "arguments = {}"]
- def self.encode(ticket, exchange, type, passive, durable, auto_delete, internal, nowait, arguments)
- pieces = []
- pieces << [40, 10].pack("n2")
- pieces << [ticket].pack("n")
- pieces << exchange.bytesize.chr
- pieces << exchange
- pieces << type.bytesize.chr
- pieces << type
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if passive
- bit_buffer = bit_buffer | (1 << 1) if durable
- bit_buffer = bit_buffer | (1 << 2) if auto_delete
- bit_buffer = bit_buffer | (1 << 3) if internal
- bit_buffer = bit_buffer | (1 << 4) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class DeclareOk < Method
- @name = "exchange.declare-ok"
- @method = 11
- @index = 0x0028000B # 40, 11, 2621451
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
-
- class Delete < Method
- @name = "exchange.delete"
- @method = 20
- @index = 0x00280014 # 40, 20, 2621460
-
- # @return
- # ["ticket = false", "exchange = nil", "if_unused = false", "nowait = false"]
- def self.encode(ticket, exchange, if_unused, nowait)
- pieces = []
- pieces << [40, 20].pack("n2")
- pieces << [ticket].pack("n")
- pieces << exchange.bytesize.chr
- pieces << exchange
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if if_unused
- bit_buffer = bit_buffer | (1 << 1) if nowait
- pieces.join("")
- end
- end
-
- class DeleteOk < Method
- @name = "exchange.delete-ok"
- @method = 21
- @index = 0x00280015 # 40, 21, 2621461
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
-
- class Bind < Method
- @name = "exchange.bind"
- @method = 30
- @index = 0x0028001E # 40, 30, 2621470
-
- # @return
- # ["ticket = false", "destination = nil", "source = nil", "routing_key = """, "nowait = false", "arguments = {}"]
- def self.encode(ticket, destination, source, routing_key, nowait, arguments)
- pieces = []
- pieces << [40, 30].pack("n2")
- pieces << [ticket].pack("n")
- pieces << destination.bytesize.chr
- pieces << destination
- pieces << source.bytesize.chr
- pieces << source
- pieces << routing_key.bytesize.chr
- pieces << routing_key
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class BindOk < Method
- @name = "exchange.bind-ok"
- @method = 31
- @index = 0x0028001F # 40, 31, 2621471
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
-
- class Unbind < Method
- @name = "exchange.unbind"
- @method = 40
- @index = 0x00280028 # 40, 40, 2621480
-
- # @return
- # ["ticket = false", "destination = nil", "source = nil", "routing_key = """, "nowait = false", "arguments = {}"]
- def self.encode(ticket, destination, source, routing_key, nowait, arguments)
- pieces = []
- pieces << [40, 40].pack("n2")
- pieces << [ticket].pack("n")
- pieces << destination.bytesize.chr
- pieces << destination
- pieces << source.bytesize.chr
- pieces << source
- pieces << routing_key.bytesize.chr
- pieces << routing_key
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class UnbindOk < Method
- @name = "exchange.unbind-ok"
- @method = 51
- @index = 0x00280033 # 40, 51, 2621491
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
- end
-
- class Queue < Class
- @name = "queue"
- @method = 50
-
- class Declare < Method
- @name = "queue.declare"
- @method = 10
- @index = 0x0032000A # 50, 10, 3276810
-
- # @return
- # ["ticket = false", "queue = """, "passive = false", "durable = false", "exclusive = false", "auto_delete = false", "nowait = false", "arguments = {}"]
- def self.encode(ticket, queue, passive, durable, exclusive, auto_delete, nowait, arguments)
- pieces = []
- pieces << [50, 10].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if passive
- bit_buffer = bit_buffer | (1 << 1) if durable
- bit_buffer = bit_buffer | (1 << 2) if exclusive
- bit_buffer = bit_buffer | (1 << 3) if auto_delete
- bit_buffer = bit_buffer | (1 << 4) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class DeclareOk < Method
- @name = "queue.declare-ok"
- @method = 11
- @index = 0x0032000B # 50, 11, 3276811
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- queue = data[offset..(offset + length)]
- offset += length
- message_count = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- consumer_count = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- self.new(queue, message_count, consumer_count)
- end
-
- attr_reader :queue, :message_count, :consumer_count
- def initialize(queue, message_count, consumer_count)
- @queue = queue
- @message_count = message_count
- @consumer_count = consumer_count
- end
- end
-
- class Bind < Method
- @name = "queue.bind"
- @method = 20
- @index = 0x00320014 # 50, 20, 3276820
-
- # @return
- # ["ticket = false", "queue = nil", "exchange = nil", "routing_key = """, "nowait = false", "arguments = {}"]
- def self.encode(ticket, queue, exchange, routing_key, nowait, arguments)
- pieces = []
- pieces << [50, 20].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- pieces << exchange.bytesize.chr
- pieces << exchange
- pieces << routing_key.bytesize.chr
- pieces << routing_key
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class BindOk < Method
- @name = "queue.bind-ok"
- @method = 21
- @index = 0x00320015 # 50, 21, 3276821
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
-
- class Purge < Method
- @name = "queue.purge"
- @method = 30
- @index = 0x0032001E # 50, 30, 3276830
-
- # @return
- # ["ticket = false", "queue = nil", "nowait = false"]
- def self.encode(ticket, queue, nowait)
- pieces = []
- pieces << [50, 30].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if nowait
- pieces.join("")
- end
- end
-
- class PurgeOk < Method
- @name = "queue.purge-ok"
- @method = 31
- @index = 0x0032001F # 50, 31, 3276831
-
- # @return
- def self.decode(data)
- offset = 0
- message_count = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- self.new(message_count)
- end
-
- attr_reader :message_count
- def initialize(message_count)
- @message_count = message_count
- end
- end
-
- class Delete < Method
- @name = "queue.delete"
- @method = 40
- @index = 0x00320028 # 50, 40, 3276840
-
- # @return
- # ["ticket = false", "queue = nil", "if_unused = false", "if_empty = false", "nowait = false"]
- def self.encode(ticket, queue, if_unused, if_empty, nowait)
- pieces = []
- pieces << [50, 40].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if if_unused
- bit_buffer = bit_buffer | (1 << 1) if if_empty
- bit_buffer = bit_buffer | (1 << 2) if nowait
- pieces.join("")
- end
- end
-
- class DeleteOk < Method
- @name = "queue.delete-ok"
- @method = 41
- @index = 0x00320029 # 50, 41, 3276841
-
- # @return
- def self.decode(data)
- offset = 0
- message_count = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- self.new(message_count)
- end
-
- attr_reader :message_count
- def initialize(message_count)
- @message_count = message_count
- end
- end
-
- class Unbind < Method
- @name = "queue.unbind"
- @method = 50
- @index = 0x00320032 # 50, 50, 3276850
-
- # @return
- # ["ticket = false", "queue = nil", "exchange = nil", "routing_key = """, "arguments = {}"]
- def self.encode(ticket, queue, exchange, routing_key, arguments)
- pieces = []
- pieces << [50, 50].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- pieces << exchange.bytesize.chr
- pieces << exchange
- pieces << routing_key.bytesize.chr
- pieces << routing_key
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class UnbindOk < Method
- @name = "queue.unbind-ok"
- @method = 51
- @index = 0x00320033 # 50, 51, 3276851
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
- end
-
- class Basic < Class
- @name = "basic"
- @method = 60
-
- PROPERTIES = [
- :content_type, # shortstr
- :content_encoding, # shortstr
- :headers, # table
- :delivery_mode, # octet
- :priority, # octet
- :correlation_id, # shortstr
- :reply_to, # shortstr
- :expiration, # shortstr
- :message_id, # shortstr
- :timestamp, # timestamp
- :type, # shortstr
- :user_id, # shortstr
- :app_id, # shortstr
- :cluster_id, # shortstr
- ]
-
- # 1 << 15
- def self.encode_content_type(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [0, 0x8000, result]
- end
-
- # 1 << 14
- def self.encode_content_encoding(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [1, 0x4000, result]
- end
-
- # 1 << 13
- def self.encode_headers(value)
- pieces = []
- pieces << AMQ::Protocol::Table.encode(result)
- [2, 0x2000, result]
- end
-
- # 1 << 12
- def self.encode_delivery_mode(value)
- pieces = []
- pieces << [result].pack("B")
- [3, 0x1000, result]
- end
-
- # 1 << 11
- def self.encode_priority(value)
- pieces = []
- pieces << [result].pack("B")
- [4, 0x0800, result]
- end
-
- # 1 << 10
- def self.encode_correlation_id(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [5, 0x0400, result]
- end
-
- # 1 << 9
- def self.encode_reply_to(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [6, 0x0200, result]
- end
-
- # 1 << 8
- def self.encode_expiration(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [7, 0x0100, result]
- end
-
- # 1 << 7
- def self.encode_message_id(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [8, 0x0080, result]
- end
-
- # 1 << 6
- def self.encode_timestamp(value)
- pieces = []
- pieces << [result].pack(">Q")
- [9, 0x0040, result]
- end
-
- # 1 << 5
- def self.encode_type(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [10, 0x0020, result]
- end
-
- # 1 << 4
- def self.encode_user_id(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [11, 0x0010, result]
- end
-
- # 1 << 3
- def self.encode_app_id(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [12, 0x0008, result]
- end
-
- # 1 << 2
- def self.encode_cluster_id(value)
- pieces = []
- pieces << result.bytesize.chr
- pieces << result
- [13, 0x0004, result]
- end
-
- def self.encode_properties(body_size, properties)
- pieces = Array.new(14) { AMQ::Protocol::EMPTY_STRING }
- flags = 0
-
- properties.each do |key, value|
- i, f, result = self.send(:"encode_#{key}", value)
- flags |= f
- pieces[i] = result
- end
-
- result = [CLASS_BASIC, 0, body_size, flags].pack("!HHQH")
- [0x02, result, pieces.join("")].join("")
- end
-
- #def self.decode_properties
- # print "def %s(data, offset):" % (c.decode,)
- # print " props = {}"
- # print " flags, = struct.unpack_from("!H", data, offset)"
- # print " offset += 2"
- # print " assert (flags & 0x01) == 0"
- # for i, f in enumerate(c.fields):
- # print " if (flags & 0x%04x): # 1 << %i" % (1 << (15-i), 15-i)
- # fields = codegen_helpers.UnpackWrapper()
- # fields.add(f.n, f.t)
- # fields.do_print(" "*8, "props["%s"]")
- # print " return props, offset"
- #end
-
- class Qos < Method
- @name = "basic.qos"
- @method = 10
- @index = 0x003C000A # 60, 10, 3932170
-
- # @return
- # ["prefetch_size = false", "prefetch_count = false", "global = false"]
- def self.encode(prefetch_size, prefetch_count, global)
- pieces = []
- pieces << [60, 10].pack("n2")
- pieces << [prefetch_size].pack("N")
- pieces << [prefetch_count].pack("n")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if global
- pieces.join("")
- end
- end
-
- class QosOk < Method
- @name = "basic.qos-ok"
- @method = 11
- @index = 0x003C000B # 60, 11, 3932171
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
-
- class Consume < Method
- @name = "basic.consume"
- @method = 20
- @index = 0x003C0014 # 60, 20, 3932180
-
- # @return
- # ["ticket = false", "queue = nil", "consumer_tag = """, "no_local = false", "no_ack = false", "exclusive = false", "nowait = false", "arguments = {}"]
- def self.encode(ticket, queue, consumer_tag, no_local, no_ack, exclusive, nowait, arguments)
- pieces = []
- pieces << [60, 20].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- pieces << consumer_tag.bytesize.chr
- pieces << consumer_tag
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if no_local
- bit_buffer = bit_buffer | (1 << 1) if no_ack
- bit_buffer = bit_buffer | (1 << 2) if exclusive
- bit_buffer = bit_buffer | (1 << 3) if nowait
- pieces << AMQ::Protocol::Table.encode(arguments)
- pieces.join("")
- end
- end
-
- class ConsumeOk < Method
- @name = "basic.consume-ok"
- @method = 21
- @index = 0x003C0015 # 60, 21, 3932181
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- consumer_tag = data[offset..(offset + length)]
- offset += length
- self.new(consumer_tag)
- end
-
- attr_reader :consumer_tag
- def initialize(consumer_tag)
- @consumer_tag = consumer_tag
- end
- end
-
- class Cancel < Method
- @name = "basic.cancel"
- @method = 30
- @index = 0x003C001E # 60, 30, 3932190
-
- # @return
- # ["consumer_tag = nil", "nowait = false"]
- def self.encode(consumer_tag, nowait)
- pieces = []
- pieces << [60, 30].pack("n2")
- pieces << consumer_tag.bytesize.chr
- pieces << consumer_tag
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if nowait
- pieces.join("")
- end
- end
-
- class CancelOk < Method
- @name = "basic.cancel-ok"
- @method = 31
- @index = 0x003C001F # 60, 31, 3932191
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- consumer_tag = data[offset..(offset + length)]
- offset += length
- self.new(consumer_tag)
- end
-
- attr_reader :consumer_tag
- def initialize(consumer_tag)
- @consumer_tag = consumer_tag
- end
- end
-
- class Publish < Method
- @name = "basic.publish"
- @method = 40
- @index = 0x003C0028 # 60, 40, 3932200
-
- # @return
- # ["ticket = false", "exchange = """, "routing_key = """, "mandatory = false", "immediate = false", "user_headers = nil", "payload = """, "frame_size = nil"]
- def self.encode(ticket, exchange, routing_key, mandatory, immediate, user_headers, payload, frame_size)
- pieces = []
- pieces << [60, 40].pack("n2")
- pieces << [ticket].pack("n")
- pieces << exchange.bytesize.chr
- pieces << exchange
- pieces << routing_key.bytesize.chr
- pieces << routing_key
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if mandatory
- bit_buffer = bit_buffer | (1 << 1) if immediate
- pieces.join("")
- end
- end
-
- class Return < Method
- @name = "basic.return"
- @method = 50
- @index = 0x003C0032 # 60, 50, 3932210
-
- # @return
- def self.decode(data)
- offset = 0
- reply_code = data[offset..(offset + 2)].unpack("n").first
- offset += 2
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- reply_text = data[offset..(offset + length)]
- offset += length
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- exchange = data[offset..(offset + length)]
- offset += length
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- routing_key = data[offset..(offset + length)]
- offset += length
- self.new(reply_code, reply_text, exchange, routing_key)
- end
-
- attr_reader :reply_code, :reply_text, :exchange, :routing_key
- def initialize(reply_code, reply_text, exchange, routing_key)
- @reply_code = reply_code
- @reply_text = reply_text
- @exchange = exchange
- @routing_key = routing_key
- end
- end
-
- class Deliver < Method
- @name = "basic.deliver"
- @method = 60
- @index = 0x003C003C # 60, 60, 3932220
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- consumer_tag = data[offset..(offset + length)]
- offset += length
- delivery_tag = data[offset..(offset + 8)].unpack("N2").first
- offset += 8
- bit_buffer = data[offset..(offset + 1)].unpack("c").first
- offset += 1
- redelivered = (bit_buffer & (1 << 0)) != 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- exchange = data[offset..(offset + length)]
- offset += length
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- routing_key = data[offset..(offset + length)]
- offset += length
- self.new(consumer_tag, delivery_tag, redelivered, exchange, routing_key)
- end
-
- attr_reader :consumer_tag, :delivery_tag, :redelivered, :exchange, :routing_key
- def initialize(consumer_tag, delivery_tag, redelivered, exchange, routing_key)
- @consumer_tag = consumer_tag
- @delivery_tag = delivery_tag
- @redelivered = redelivered
- @exchange = exchange
- @routing_key = routing_key
- end
- end
-
- class Get < Method
- @name = "basic.get"
- @method = 70
- @index = 0x003C0046 # 60, 70, 3932230
-
- # @return
- # ["ticket = false", "queue = nil", "no_ack = false"]
- def self.encode(ticket, queue, no_ack)
- pieces = []
- pieces << [60, 70].pack("n2")
- pieces << [ticket].pack("n")
- pieces << queue.bytesize.chr
- pieces << queue
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if no_ack
- pieces.join("")
- end
- end
-
- class GetOk < Method
- @name = "basic.get-ok"
- @method = 71
- @index = 0x003C0047 # 60, 71, 3932231
-
- # @return
- def self.decode(data)
- offset = 0
- delivery_tag = data[offset..(offset + 8)].unpack("N2").first
- offset += 8
- bit_buffer = data[offset..(offset + 1)].unpack("c").first
- offset += 1
- redelivered = (bit_buffer & (1 << 0)) != 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- exchange = data[offset..(offset + length)]
- offset += length
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- routing_key = data[offset..(offset + length)]
- offset += length
- message_count = data[offset..(offset + 4)].unpack("N").first
- offset += 4
- self.new(delivery_tag, redelivered, exchange, routing_key, message_count)
- end
-
- attr_reader :delivery_tag, :redelivered, :exchange, :routing_key, :message_count
- def initialize(delivery_tag, redelivered, exchange, routing_key, message_count)
- @delivery_tag = delivery_tag
- @redelivered = redelivered
- @exchange = exchange
- @routing_key = routing_key
- @message_count = message_count
- end
- end
-
- class GetEmpty < Method
- @name = "basic.get-empty"
- @method = 72
- @index = 0x003C0048 # 60, 72, 3932232
-
- # @return
- def self.decode(data)
- offset = 0
- length = data[offset..(offset + 1)].unpack("N")[0]
- offset += 1
- cluster_id = data[offset..(offset + length)]
- offset += length
- self.new(cluster_id)
- end
-
- attr_reader :cluster_id
- def initialize(cluster_id)
- @cluster_id = cluster_id
- end
- end
-
- class Ack < Method
- @name = "basic.ack"
- @method = 80
- @index = 0x003C0050 # 60, 80, 3932240
-
- # @return
- # ["delivery_tag = false", "multiple = false"]
- def self.encode(delivery_tag, multiple)
- pieces = []
- pieces << [60, 80].pack("n2")
- pieces << [delivery_tag].pack(">Q")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if multiple
- pieces.join("")
- end
- end
-
- class Reject < Method
- @name = "basic.reject"
- @method = 90
- @index = 0x003C005A # 60, 90, 3932250
-
- # @return
- # ["delivery_tag = nil", "requeue = true"]
- def self.encode(delivery_tag, requeue)
- pieces = []
- pieces << [60, 90].pack("n2")
- pieces << [delivery_tag].pack(">Q")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if requeue
- pieces.join("")
- end
- end
-
- class RecoverAsync < Method
- @name = "basic.recover-async"
- @method = 100
- @index = 0x003C0064 # 60, 100, 3932260
-
- # @return
- # ["requeue = false"]
- def self.encode(requeue)
- pieces = []
- pieces << [60, 100].pack("n2")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if requeue
- pieces.join("")
- end
- end
-
- class Recover < Method
- @name = "basic.recover"
- @method = 110
- @index = 0x003C006E # 60, 110, 3932270
-
- # @return
- # ["requeue = false"]
- def self.encode(requeue)
- pieces = []
- pieces << [60, 110].pack("n2")
- bit_buffer = 0
- bit_buffer = bit_buffer | (1 << 0) if requeue
- pieces.join("")
- end
- end
-
- class RecoverOk < Method
- @name = "basic.recover-ok"
- @method = 111
- @index = 0x003C006F # 60, 111, 3932271
-
- # @return
- def self.decode(data)
- offset = 0
- self.new()
- end
-
- attr_reader
- def initialize()
- end
- end
- end
-
- METHODS = begin
- Method.methods.inject(Hash.new) do |hash, klass|
- hash.merge!(klass.index => klass)
- end
- end
- end
-end
+require "amq/protocol/version"
+require "amq/protocol/client"