lib/amqp/header.rb in amqp-0.7.5 vs lib/amqp/header.rb in amqp-0.8.0.beta1
- old
+ new
@@ -1,33 +1,57 @@
# encoding: utf-8
module AMQP
+ # We keep this class around for sake of API compatibility with 0.7.x series.
+ #
+ # @note This class is not part of the public API and may be removed in the future without any warning.
class Header
- def initialize(mq, header_obj)
- @mq = mq
- @header = header_obj
+
+ #
+ # API
+ #
+
+ # @return [AMQP::Channel]
+ attr_reader :channel
+ # AMQP method frame this header is associated with. Carries additional information that varies between AMQP methods.
+ # @return [AMQ::Protocol::Method]
+ attr_reader :method
+ # AMQP message header as a hash
+ # @return [Hash]
+ attr_reader :header
+
+ # @api public
+ def initialize(channel, method, header)
+ @channel, @method, @header = channel, method, header
end
# Acknowledges the receipt of this message with the server.
- def ack
- @mq.callback {
- @mq.send Protocol::Basic::Ack.new(:delivery_tag => properties[:delivery_tag])
- }
+ # @param [Boolean] multiple Whether or not to acknowledge multiple messages
+ # @api public
+ def ack(multiple = false)
+ @channel.acknowledge(@method.delivery_tag, multiple)
end
# Reject this message.
- # * :requeue => true | false (default false)
+ # @option opts [Hash] :requeue (false) Whether message should be requeued.
+ # @api public
def reject(opts = {})
- @mq.callback {
- @mq.send Protocol::Basic::Reject.new(opts.merge(:delivery_tag => properties[:delivery_tag]))
- }
+ @channel.reject(@method.delivery_tag, opts.fetch(:requeue, false))
end
- def method_missing(meth, *args, &blk)
- @header.send meth, *args, &blk
+ def to_hash
+ @header
+ end # to_hash
+
+ def respond_to_missing?(meth, _)
+ (@header && args.empty? && blk.nil? && @header.has_key?(meth)) || @method.respond_to?(meth)
end
- def inspect
- @header.inspect
+ def method_missing(meth, *args, &blk)
+ if @header && args.empty? && blk.nil? && @header.has_key?(meth)
+ @header[meth]
+ else
+ @method.__send__(meth, *args, &blk)
+ end
end
- end
-end
+ end # Header
+end # AMQP