A utility for simpler and more intuitive handling of delivery events related to outgoing messages.
# File lib/handler/outgoing_message_handler.rb, line 27 def initialize(auto_settle = true, delegate = nil) @auto_settle = auto_settle @delegate = delegate end
Called when the remote peer accepts a sent message.
@param event [Qpid::Proton::Event::Event] The event.
# File lib/handler/outgoing_message_handler.rb, line 65 def on_accepted(event) Qpid::Proton::Event.dispatch(@delegate, :on_accepted, event) if !@delegate.nil? end
# File lib/handler/outgoing_message_handler.rb, line 38 def on_delivery(event) delivery = event.delivery if delivery.link.sender? && delivery.updated? if delivery.remote_accepted? self.on_accepted(event) elsif delivery.remote_rejected? self.on_rejected(event) elsif delivery.remote_released? || delivery.remote_modified? self.on_released(event) end self.on_settled(event) if delivery.settled? delivery.settle if @auto_settle end end
# File lib/handler/outgoing_message_handler.rb, line 32 def on_link_flow(event) self.on_sendable(event) if event.link.sender? && event.link.credit > 0 && (event.link.state & Qpid::Proton::Endpoint::LOCAL_ACTIVE) && (event.link.state & Qpid::Proton::Endpoint::REMOTE_ACTIVE) end
Called when the remote peer rejects a sent message.
@param event [Qpid::Proton::Event::Event] The event.
# File lib/handler/outgoing_message_handler.rb, line 73 def on_rejected(event) Qpid::Proton::Event.dispatch(@delegate, :on_rejected, event) if !@delegate.nil? end
Called when the remote peer releases an outgoing message.
Note that this may be in resposnse to either the REELAASE or MODIFIED state as defined by the AMQP specification.
@param event [Qpid::Proton::Event::Event] The event.
# File lib/handler/outgoing_message_handler.rb, line 84 def on_released(event) Qpid::Proton::Event.dispatch(@delegate, :on_released, event) if !@delegate.nil? end
Called when the sender link has credit and messages and be transferred.
@param event [Qpid::Proton::Event::Event] The event.
# File lib/handler/outgoing_message_handler.rb, line 57 def on_sendable(event) Qpid::Proton::Event.dispatch(@delegate, :on_sendable, event) if !@delegate.nil? end
Called when the remote peer has settled the outgoing message.
This is the point at which it should never be retransmitted.
@param event [Qpid::Proton::Event::Event] The event.
# File lib/handler/outgoing_message_handler.rb, line 94 def on_settled(event) Qpid::Proton::Event.dispatch(@delegate, :on_settled, event) if !@delegate.nil? end