def pop(opts = {}, &block)
if block
shim = Proc.new { |method, headers, payload|
case block.arity
when 1 then
block.call(payload)
when 2 then
h = Header.new(@channel, method, headers ? headers.decode_payload : nil)
block.call(h, payload)
else
h = Header.new(@channel, method, headers ? headers.decode_payload : nil)
block.call(h, payload, method.delivery_tag, method.redelivered, method.exchange, method.routing_key)
end
}
@channel.once_open do
self.get(!opts.fetch(:ack, false), &shim)
end
else
@channel.once_open { self.get(!opts.fetch(:ack, false)) }
end
end