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