Class: Qpid::Proton::Handler::OutgoingMessageHandler
- Inherits:
-
BaseHandler
- Object
- BaseHandler
- Qpid::Proton::Handler::OutgoingMessageHandler
- Defined in:
- lib/handler/outgoing_message_handler.rb
Overview
A utility for simpler and more intuitive handling of delivery events related to outgoing messages.
Instance Method Summary collapse
-
#initialize(auto_settle = true, delegate = nil) ⇒ OutgoingMessageHandler
constructor
A new instance of OutgoingMessageHandler.
-
#on_accepted(event) ⇒ Object
Called when the remote peer accepts a sent message.
- #on_delivery(event) ⇒ Object
- #on_link_flow(event) ⇒ Object
-
#on_rejected(event) ⇒ Object
Called when the remote peer rejects a sent message.
-
#on_released(event) ⇒ Object
Called when the remote peer releases an outgoing message.
-
#on_sendable(event) ⇒ Object
Called when the sender link has credit and messages and be transferred.
-
#on_settled(event) ⇒ Object
Called when the remote peer has settled the outgoing message.
Methods inherited from BaseHandler
Constructor Details
#initialize(auto_settle = true, delegate = nil) ⇒ OutgoingMessageHandler
Returns a new instance of OutgoingMessageHandler.
27 28 29 30 |
# File 'lib/handler/outgoing_message_handler.rb', line 27 def initialize(auto_settle = true, delegate = nil) @auto_settle = auto_settle @delegate = delegate end |
Instance Method Details
#on_accepted(event) ⇒ Object
Called when the remote peer accepts a sent message.
63 64 65 |
# File 'lib/handler/outgoing_message_handler.rb', line 63 def on_accepted(event) Qpid::Proton::Event.dispatch(@delegate, :on_accepted, event) if !@delegate.nil? end |
#on_delivery(event) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/handler/outgoing_message_handler.rb', line 36 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 |
#on_link_flow(event) ⇒ Object
32 33 34 |
# 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 end |
#on_rejected(event) ⇒ Object
Called when the remote peer rejects a sent message.
71 72 73 |
# File 'lib/handler/outgoing_message_handler.rb', line 71 def on_rejected(event) Qpid::Proton::Event.dispatch(@delegate, :on_rejected, event) if !@delegate.nil? end |
#on_released(event) ⇒ Object
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.
82 83 84 |
# File 'lib/handler/outgoing_message_handler.rb', line 82 def on_released(event) Qpid::Proton::Event.dispatch(@delegate, :on_released, event) if !@delegate.nil? end |
#on_sendable(event) ⇒ Object
Called when the sender link has credit and messages and be transferred.
55 56 57 |
# File 'lib/handler/outgoing_message_handler.rb', line 55 def on_sendable(event) Qpid::Proton::Event.dispatch(@delegate, :on_sendable, event) if !@delegate.nil? end |
#on_settled(event) ⇒ Object
Called when the remote peer has settled the outgoing message.
This is the point at which it should never be retransmitted.
92 93 94 |
# File 'lib/handler/outgoing_message_handler.rb', line 92 def on_settled(event) Qpid::Proton::Event.dispatch(@delegate, :on_settled, event) if !@delegate.nil? end |