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.
Direct Known Subclasses
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.
65 66 67 |
# 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 |
#on_delivery(event) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# 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 |
#on_link_flow(event) ⇒ Object
32 33 34 35 36 |
# 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 |
#on_rejected(event) ⇒ Object
Called when the remote peer rejects a sent message.
73 74 75 |
# 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 |
#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.
84 85 86 |
# 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 |
#on_sendable(event) ⇒ Object
Called when the sender link has credit and messages and be transferred.
57 58 59 |
# 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 |
#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.
94 95 96 |
# 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 |