lib/amqp/client/frames.rb in amqp-client-1.0.0 vs lib/amqp/client/frames.rb in amqp-client-1.0.1

- old
+ new

@@ -2,530 +2,534 @@ require_relative "./properties" require_relative "./table" module AMQP - # Generate binary data for different frames - # Each frame type implemented as a method - # Having a class for each frame type is more expensive in terms of CPU and memory - module FrameBytes - module_function + class Client + # Generate binary data for different frames + # Each frame type implemented as a method + # Having a class for each frame type is more expensive in terms of CPU and memory + # @api private + module FrameBytes + module_function - def connection_start_ok(response, properties) - prop_tbl = Table.encode(properties) - [ - 1, # type: method - 0, # channel id - 2 + 2 + 4 + prop_tbl.bytesize + 6 + 4 + response.bytesize + 1, # frame size - 10, # class id - 11, # method id - prop_tbl.bytesize, prop_tbl, # client props - 5, "PLAIN", # mechanism - response.bytesize, response, - 0, "", # locale - 206 # frame end - ].pack("C S> L> S> S> L>a* Ca* L>a* Ca* C") - end + def connection_start_ok(response, properties) + prop_tbl = Table.encode(properties) + [ + 1, # type: method + 0, # channel id + 2 + 2 + 4 + prop_tbl.bytesize + 6 + 4 + response.bytesize + 1, # frame size + 10, # class id + 11, # method id + prop_tbl.bytesize, prop_tbl, # client props + 5, "PLAIN", # mechanism + response.bytesize, response, + 0, "", # locale + 206 # frame end + ].pack("C S> L> S> S> L>a* Ca* L>a* Ca* C") + end - def connection_tune_ok(channel_max, frame_max, heartbeat) - [ - 1, # type: method - 0, # channel id - 12, # frame size - 10, # class: connection - 31, # method: tune-ok - channel_max, - frame_max, - heartbeat, - 206 # frame end - ].pack("CS>L>S>S>S>L>S>C") - end + def connection_tune_ok(channel_max, frame_max, heartbeat) + [ + 1, # type: method + 0, # channel id + 12, # frame size + 10, # class: connection + 31, # method: tune-ok + channel_max, + frame_max, + heartbeat, + 206 # frame end + ].pack("CS>L>S>S>S>L>S>C") + end - def connection_open(vhost) - [ - 1, # type: method - 0, # channel id - 2 + 2 + 1 + vhost.bytesize + 1 + 1, # frame_size - 10, # class: connection - 40, # method: open - vhost.bytesize, vhost, - 0, # reserved1 - 0, # reserved2 - 206 # frame end - ].pack("C S> L> S> S> Ca* CCC") - end + def connection_open(vhost) + [ + 1, # type: method + 0, # channel id + 2 + 2 + 1 + vhost.bytesize + 1 + 1, # frame_size + 10, # class: connection + 40, # method: open + vhost.bytesize, vhost, + 0, # reserved1 + 0, # reserved2 + 206 # frame end + ].pack("C S> L> S> S> Ca* CCC") + end - def connection_close(code, reason) - frame_size = 2 + 2 + 2 + 1 + reason.bytesize + 2 + 2 - [ - 1, # type: method - 0, # channel id - frame_size, # frame size - 10, # class: connection - 50, # method: close - code, - reason.bytesize, reason, - 0, # error class id - 0, # error method id - 206 # frame end - ].pack("C S> L> S> S> S> Ca* S> S> C") - end + def connection_close(code, reason) + frame_size = 2 + 2 + 2 + 1 + reason.bytesize + 2 + 2 + [ + 1, # type: method + 0, # channel id + frame_size, # frame size + 10, # class: connection + 50, # method: close + code, + reason.bytesize, reason, + 0, # error class id + 0, # error method id + 206 # frame end + ].pack("C S> L> S> S> S> Ca* S> S> C") + end - def connection_close_ok - [ - 1, # type: method - 0, # channel id - 4, # frame size - 10, # class: connection - 51, # method: close-ok - 206 # frame end - ].pack("C S> L> S> S> C") - end + def connection_close_ok + [ + 1, # type: method + 0, # channel id + 4, # frame size + 10, # class: connection + 51, # method: close-ok + 206 # frame end + ].pack("C S> L> S> S> C") + end - def channel_open(id) - [ - 1, # type: method - id, # channel id - 5, # frame size - 20, # class: channel - 10, # method: open - 0, # reserved1 - 206 # frame end - ].pack("C S> L> S> S> C C") - end + def channel_open(id) + [ + 1, # type: method + id, # channel id + 5, # frame size + 20, # class: channel + 10, # method: open + 0, # reserved1 + 206 # frame end + ].pack("C S> L> S> S> C C") + end - def channel_close(id, reason, code) - frame_size = 2 + 2 + 2 + 1 + reason.bytesize + 2 + 2 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 20, # class: channel - 40, # method: close - code, - reason.bytesize, reason, - 0, # error class id - 0, # error method id - 206 # frame end - ].pack("C S> L> S> S> S> Ca* S> S> C") - end + def channel_close(id, reason, code) + frame_size = 2 + 2 + 2 + 1 + reason.bytesize + 2 + 2 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 20, # class: channel + 40, # method: close + code, + reason.bytesize, reason, + 0, # error class id + 0, # error method id + 206 # frame end + ].pack("C S> L> S> S> S> Ca* S> S> C") + end - def channel_close_ok(id) - [ - 1, # type: method - id, # channel id - 4, # frame size - 20, # class: channel - 41, # method: close-ok - 206 # frame end - ].pack("C S> L> S> S> C") - end + def channel_close_ok(id) + [ + 1, # type: method + id, # channel id + 4, # frame size + 20, # class: channel + 41, # method: close-ok + 206 # frame end + ].pack("C S> L> S> S> C") + end - def exchange_declare(id, name, type, passive, durable, auto_delete, internal, arguments) - no_wait = false - bits = 0 - bits |= (1 << 0) if passive - bits |= (1 << 1) if durable - bits |= (1 << 2) if auto_delete - bits |= (1 << 3) if internal - bits |= (1 << 4) if no_wait - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + type.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 40, # class: exchange - 10, # method: declare - 0, # reserved1 - name.bytesize, name, - type.bytesize, type, - bits, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* C L>a* C") - end + def exchange_declare(id, name, type, passive, durable, auto_delete, internal, arguments) + no_wait = false + bits = 0 + bits |= (1 << 0) if passive + bits |= (1 << 1) if durable + bits |= (1 << 2) if auto_delete + bits |= (1 << 3) if internal + bits |= (1 << 4) if no_wait + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + type.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 40, # class: exchange + 10, # method: declare + 0, # reserved1 + name.bytesize, name, + type.bytesize, type, + bits, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* C L>a* C") + end - def exchange_delete(id, name, if_unused, no_wait) - bits = 0 - bits |= (1 << 0) if if_unused - bits |= (1 << 1) if no_wait - frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 40, # class: exchange - 20, # method: delete - 0, # reserved1 - name.bytesize, name, - bits, - 206 # frame end - ].pack("C S> L> S> S> S> Ca* C C") - end + def exchange_delete(id, name, if_unused, no_wait) + bits = 0 + bits |= (1 << 0) if if_unused + bits |= (1 << 1) if no_wait + frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 40, # class: exchange + 20, # method: delete + 0, # reserved1 + name.bytesize, name, + bits, + 206 # frame end + ].pack("C S> L> S> S> S> Ca* C C") + end - def exchange_bind(id, destination, source, binding_key, no_wait, arguments) - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + destination.bytesize + 1 + source.bytesize + 1 + - binding_key.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 40, # class: exchange - 30, # method: bind - 0, # reserved1 - destination.bytesize, destination, - source.bytesize, source, - binding_key.bytesize, binding_key, - no_wait ? 1 : 0, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") - end + def exchange_bind(id, destination, source, binding_key, no_wait, arguments) + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + destination.bytesize + 1 + source.bytesize + 1 + + binding_key.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 40, # class: exchange + 30, # method: bind + 0, # reserved1 + destination.bytesize, destination, + source.bytesize, source, + binding_key.bytesize, binding_key, + no_wait ? 1 : 0, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") + end - def exchange_unbind(id, destination, source, binding_key, no_wait, arguments) - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + destination.bytesize + 1 + source.bytesize + 1 + - binding_key.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 40, # class: exchange - 40, # method: unbind - 0, # reserved1 - destination.bytesize, destination, - source.bytesize, source, - binding_key.bytesize, binding_key, - no_wait ? 1 : 0, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") - end + def exchange_unbind(id, destination, source, binding_key, no_wait, arguments) + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + destination.bytesize + 1 + source.bytesize + 1 + + binding_key.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 40, # class: exchange + 40, # method: unbind + 0, # reserved1 + destination.bytesize, destination, + source.bytesize, source, + binding_key.bytesize, binding_key, + no_wait ? 1 : 0, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") + end - def queue_declare(id, name, passive, durable, exclusive, auto_delete, arguments) - no_wait = false - bits = 0 - bits |= (1 << 0) if passive - bits |= (1 << 1) if durable - bits |= (1 << 2) if exclusive - bits |= (1 << 3) if auto_delete - bits |= (1 << 4) if no_wait - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 50, # class: queue - 10, # method: declare - 0, # reserved1 - name.bytesize, name, - bits, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* C L>a* C") - end + def queue_declare(id, name, passive, durable, exclusive, auto_delete, arguments) + no_wait = false + bits = 0 + bits |= (1 << 0) if passive + bits |= (1 << 1) if durable + bits |= (1 << 2) if exclusive + bits |= (1 << 3) if auto_delete + bits |= (1 << 4) if no_wait + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 50, # class: queue + 10, # method: declare + 0, # reserved1 + name.bytesize, name, + bits, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* C L>a* C") + end - def queue_delete(id, name, if_unused, if_empty, no_wait) - bits = 0 - bits |= (1 << 0) if if_unused - bits |= (1 << 1) if if_empty - bits |= (1 << 2) if no_wait - frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 50, # class: queue - 40, # method: declare - 0, # reserved1 - name.bytesize, name, - bits, - 206 # frame end - ].pack("C S> L> S> S> S> Ca* C C") - end + def queue_delete(id, name, if_unused, if_empty, no_wait) + bits = 0 + bits |= (1 << 0) if if_unused + bits |= (1 << 1) if if_empty + bits |= (1 << 2) if no_wait + frame_size = 2 + 2 + 2 + 1 + name.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 50, # class: queue + 40, # method: declare + 0, # reserved1 + name.bytesize, name, + bits, + 206 # frame end + ].pack("C S> L> S> S> S> Ca* C C") + end - def queue_bind(id, queue, exchange, binding_key, no_wait, arguments) - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + exchange.bytesize + 1 + - binding_key.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 50, # class: queue - 20, # method: bind - 0, # reserved1 - queue.bytesize, queue, - exchange.bytesize, exchange, - binding_key.bytesize, binding_key, - no_wait ? 1 : 0, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") - end + def queue_bind(id, queue, exchange, binding_key, no_wait, arguments) + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + exchange.bytesize + 1 + + binding_key.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 50, # class: queue + 20, # method: bind + 0, # reserved1 + queue.bytesize, queue, + exchange.bytesize, exchange, + binding_key.bytesize, binding_key, + no_wait ? 1 : 0, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* Ca* C L>a* C") + end - def queue_unbind(id, queue, exchange, binding_key, arguments) - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + exchange.bytesize + 1 + binding_key.bytesize + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 50, # class: queue - 50, # method: unbind - 0, # reserved1 - queue.bytesize, queue, - exchange.bytesize, exchange, - binding_key.bytesize, binding_key, - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* Ca* L>a* C") - end + def queue_unbind(id, queue, exchange, binding_key, arguments) + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + exchange.bytesize + 1 + + binding_key.bytesize + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 50, # class: queue + 50, # method: unbind + 0, # reserved1 + queue.bytesize, queue, + exchange.bytesize, exchange, + binding_key.bytesize, binding_key, + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* Ca* L>a* C") + end - def queue_purge(id, queue, no_wait) - frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 50, # class: queue - 30, # method: purge - 0, # reserved1 - queue.bytesize, queue, - no_wait ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> S> Ca* C C") - end + def queue_purge(id, queue, no_wait) + frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 50, # class: queue + 30, # method: purge + 0, # reserved1 + queue.bytesize, queue, + no_wait ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> S> Ca* C C") + end - def basic_get(id, queue, no_ack) - frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 70, # method: get - 0, # reserved1 - queue.bytesize, queue, - no_ack ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> S> Ca* C C") - end + def basic_get(id, queue, no_ack) + frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 70, # method: get + 0, # reserved1 + queue.bytesize, queue, + no_ack ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> S> Ca* C C") + end - def basic_publish(id, exchange, routing_key, mandatory) - frame_size = 2 + 2 + 2 + 1 + exchange.bytesize + 1 + routing_key.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 40, # method: publish - 0, # reserved1 - exchange.bytesize, exchange, - routing_key.bytesize, routing_key, - mandatory ? 1 : 0, # bits, mandatory/immediate - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* C C") - end + def basic_publish(id, exchange, routing_key, mandatory) + frame_size = 2 + 2 + 2 + 1 + exchange.bytesize + 1 + routing_key.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 40, # method: publish + 0, # reserved1 + exchange.bytesize, exchange, + routing_key.bytesize, routing_key, + mandatory ? 1 : 0, # bits, mandatory/immediate + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* C C") + end - def header(id, body_size, properties) - props = Properties.new(**properties).encode - frame_size = 2 + 2 + 8 + props.bytesize - [ - 2, # type: header - id, # channel id - frame_size, # frame size - 60, # class: basic - 0, # weight - body_size, - props, # properties - 206 # frame end - ].pack("C S> L> S> S> Q> a* C") - end + def header(id, body_size, properties) + props = Properties.new(**properties).encode + frame_size = 2 + 2 + 8 + props.bytesize + [ + 2, # type: header + id, # channel id + frame_size, # frame size + 60, # class: basic + 0, # weight + body_size, + props, # properties + 206 # frame end + ].pack("C S> L> S> S> Q> a* C") + end - def body(id, body_part) - [ - 3, # type: body - id, # channel id - body_part.bytesize, # frame size - body_part, - 206 # frame end - ].pack("C S> L> a* C") - end + def body(id, body_part) + [ + 3, # type: body + id, # channel id + body_part.bytesize, # frame size + body_part, + 206 # frame end + ].pack("C S> L> a* C") + end - def basic_consume(id, queue, tag, no_ack, exclusive, arguments) - no_local = false - no_wait = false - bits = 0 - bits |= (1 << 0) if no_local - bits |= (1 << 1) if no_ack - bits |= (1 << 2) if exclusive - bits |= (1 << 3) if no_wait - tbl = Table.encode(arguments) - frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + tag.bytesize + 1 + 4 + tbl.bytesize - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 20, # method: consume - 0, # reserved1 - queue.bytesize, queue, - tag.bytesize, tag, - bits, # bits - tbl.bytesize, tbl, # arguments - 206 # frame end - ].pack("C S> L> S> S> S> Ca* Ca* C L>a* C") - end + def basic_consume(id, queue, tag, no_ack, exclusive, arguments) + no_local = false + no_wait = false + bits = 0 + bits |= (1 << 0) if no_local + bits |= (1 << 1) if no_ack + bits |= (1 << 2) if exclusive + bits |= (1 << 3) if no_wait + tbl = Table.encode(arguments) + frame_size = 2 + 2 + 2 + 1 + queue.bytesize + 1 + tag.bytesize + 1 + 4 + tbl.bytesize + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 20, # method: consume + 0, # reserved1 + queue.bytesize, queue, + tag.bytesize, tag, + bits, # bits + tbl.bytesize, tbl, # arguments + 206 # frame end + ].pack("C S> L> S> S> S> Ca* Ca* C L>a* C") + end - def basic_cancel(id, consumer_tag, no_wait: false) - frame_size = 2 + 2 + 1 + consumer_tag.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 30, # method: cancel - consumer_tag.bytesize, consumer_tag, - no_wait ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> Ca* C C") - end + def basic_cancel(id, consumer_tag, no_wait: false) + frame_size = 2 + 2 + 1 + consumer_tag.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 30, # method: cancel + consumer_tag.bytesize, consumer_tag, + no_wait ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> Ca* C C") + end - def basic_cancel_ok(id, consumer_tag) - frame_size = 2 + 2 + 1 + consumer_tag.bytesize + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 31, # method: cancel-ok - consumer_tag.bytesize, consumer_tag, - 206 # frame end - ].pack("C S> L> S> S> Ca* C") - end + def basic_cancel_ok(id, consumer_tag) + frame_size = 2 + 2 + 1 + consumer_tag.bytesize + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 31, # method: cancel-ok + consumer_tag.bytesize, consumer_tag, + 206 # frame end + ].pack("C S> L> S> S> Ca* C") + end - def basic_ack(id, delivery_tag, multiple) - frame_size = 2 + 2 + 8 + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 80, # method: ack - delivery_tag, - multiple ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> Q> C C") - end + def basic_ack(id, delivery_tag, multiple) + frame_size = 2 + 2 + 8 + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 80, # method: ack + delivery_tag, + multiple ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> Q> C C") + end - def basic_nack(id, delivery_tag, multiple, requeue) - bits = 0 - bits |= (1 << 0) if multiple - bits |= (1 << 1) if requeue - frame_size = 2 + 2 + 8 + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 120, # method: nack - delivery_tag, - bits, - 206 # frame end - ].pack("C S> L> S> S> Q> C C") - end + def basic_nack(id, delivery_tag, multiple, requeue) + bits = 0 + bits |= (1 << 0) if multiple + bits |= (1 << 1) if requeue + frame_size = 2 + 2 + 8 + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 120, # method: nack + delivery_tag, + bits, + 206 # frame end + ].pack("C S> L> S> S> Q> C C") + end - def basic_reject(id, delivery_tag, requeue) - frame_size = 2 + 2 + 8 + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 90, # method: reject - delivery_tag, - requeue ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> Q> C C") - end + def basic_reject(id, delivery_tag, requeue) + frame_size = 2 + 2 + 8 + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 90, # method: reject + delivery_tag, + requeue ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> Q> C C") + end - def basic_qos(id, prefetch_size, prefetch_count, global) - frame_size = 2 + 2 + 4 + 2 + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 10, # method: qos - prefetch_size, - prefetch_count, - global ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> L> S> C C") - end + def basic_qos(id, prefetch_size, prefetch_count, global) + frame_size = 2 + 2 + 4 + 2 + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 10, # method: qos + prefetch_size, + prefetch_count, + global ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> L> S> C C") + end - def basic_recover(id, requeue) - frame_size = 2 + 2 + 1 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 60, # class: basic - 110, # method: recover - requeue ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> C C") - end + def basic_recover(id, requeue) + frame_size = 2 + 2 + 1 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 60, # class: basic + 110, # method: recover + requeue ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> C C") + end - def confirm_select(id, no_wait) - [ - 1, # type: method - id, # channel id - 5, # frame size - 85, # class: confirm - 10, # method: select - no_wait ? 1 : 0, - 206 # frame end - ].pack("C S> L> S> S> C C") - end + def confirm_select(id, no_wait) + [ + 1, # type: method + id, # channel id + 5, # frame size + 85, # class: confirm + 10, # method: select + no_wait ? 1 : 0, + 206 # frame end + ].pack("C S> L> S> S> C C") + end - def tx_select(id) - frame_size = 2 + 2 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 90, # class: tx - 10, # method: select - 206 # frame end - ].pack("C S> L> S> S> C") - end + def tx_select(id) + frame_size = 2 + 2 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 90, # class: tx + 10, # method: select + 206 # frame end + ].pack("C S> L> S> S> C") + end - def tx_commit(id) - frame_size = 2 + 2 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 90, # class: tx - 20, # method: commit - 206 # frame end - ].pack("C S> L> S> S> C") - end + def tx_commit(id) + frame_size = 2 + 2 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 90, # class: tx + 20, # method: commit + 206 # frame end + ].pack("C S> L> S> S> C") + end - def tx_rollback(id) - frame_size = 2 + 2 - [ - 1, # type: method - id, # channel id - frame_size, # frame size - 90, # class: tx - 30, # method: rollback - 206 # frame end - ].pack("C S> L> S> S> C") + def tx_rollback(id) + frame_size = 2 + 2 + [ + 1, # type: method + id, # channel id + frame_size, # frame size + 90, # class: tx + 30, # method: rollback + 206 # frame end + ].pack("C S> L> S> S> C") + end end end end