A utility for simpler and more intuitive handling of delivery events related to incoming messages.
# File lib/handler/incoming_message_handler.rb, line 29 def initialize(auto_accept = true, delegate = nil) @delegate = delegate @auto_accept = auto_accept end
# File lib/handler/incoming_message_handler.rb, line 34 def on_delivery(event) delivery = event.delivery return unless delivery.link.receiver? if delivery.readable? && !delivery.partial? event.message = Qpid::Proton::Util::Engine.receive_message(delivery) if event.link.local_closed? if @auto_accept delivery.update(Qpid::Proton::Disposition::RELEASED) delivery.settle end else begin self.on_message(event) if @auto_accept delivery.update(Qpid::Proton::Disposition::ACCEPTED) delivery.settle end rescue Qpid::Proton::Reject delivery.update(Qpid::Proton::Disposition::REJECTED) delivery.settle rescue Qpid::Proton::Release delivery.update(Qpid::Proton::Disposition::MODIFIED) delivery.settle end end elsif delivery.updated? && delivery.settled? self.on_settled(event) end end
# File lib/handler/incoming_message_handler.rb, line 64 def on_message(event) Qpid::Proton::Event.dispatch(@delegate, :on_message, event) if !@delegate.nil? end
# File lib/handler/incoming_message_handler.rb, line 68 def on_settled(event) Qpid::Proton::Event.dispatch(@delegate, :on_settled, event) if !@delegate.nil? end