Class: Qpid::Proton::Handler::OutgoingMessageHandler

Inherits:
BaseHandler
  • Object
show all
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

Methods inherited from BaseHandler

#on_unhandled

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.

Parameters:



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


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.

Parameters:



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.

Parameters:



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.

Parameters:



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.

Parameters:



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