Class: Qpid::Proton::Delivery
Overview
Constant Summary
Constants inherited from Transfer
Transfer::PROTON_METHOD_PREFIX, Transfer::State
Constants included from Qpid::Proton::Disposition::State
Qpid::Proton::Disposition::State::ACCEPTED, Qpid::Proton::Disposition::State::MODIFIED, Qpid::Proton::Disposition::State::RECEIVED, Qpid::Proton::Disposition::State::REJECTED, Qpid::Proton::Disposition::State::RELEASED
Instance Method Summary collapse
-
#aborted? ⇒ Boolean
True if the transfer was aborted by the sender.
-
#accept
Accept the receiveed message.
-
#complete? ⇒ Boolean
True if the incoming message is complete, call #message to retrieve it.
-
#initialize(*args) ⇒ Delivery
constructor
A new instance of Delivery.
-
#message ⇒ Message
Get the message from the delivery.
-
#modify
deprecated
Deprecated.
use #release with modification options
-
#receiver ⇒ Receiver
The parent Receiver link.
-
#reject
Reject a message, indicating to the sender that is invalid and should never be delivered again to this or any other receiver.
-
#release(opts = nil)
Release a message, indicating to the sender that it was not processed but may be delivered again to this or another receiver.
Methods inherited from Transfer
#connection, #id, #inspect, #link, #local_state, #session, #settle, #settled?, #state, #to_s, #transport, #update, #work_queue, wrap
Methods included from Qpid::Proton::Disposition::State::ClassMethods
Constructor Details
#initialize(*args) ⇒ Delivery
Returns a new instance of Delivery.
21 |
# File 'lib/core/delivery.rb', line 21 def initialize(*args) super; @message = nil; end |
Instance Method Details
#aborted? ⇒ Boolean
Returns True if the transfer was aborted by the sender.
74 |
# File 'lib/core/delivery.rb', line 74 proton_caller :aborted? |
#accept
Accept the receiveed message.
27 |
# File 'lib/core/delivery.rb', line 27 def accept() settle ACCEPTED; end |
#complete? ⇒ Boolean
Returns true if the incoming message is complete, call #message to retrieve it.
77 |
# File 'lib/core/delivery.rb', line 77 def complete?() readable? && !aborted? && !partial?; end |
#message ⇒ Message
Get the message from the delivery.
84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/core/delivery.rb', line 84 def unless @message raise AbortedError, "message aborted by sender" if aborted? raise UnderflowError, "incoming message incomplete" if partial? raise ArgumentError, "no incoming message" unless readable? @message = Message.new @message.decode(link.receive(pending)) link.advance end @message end |
#modify
use #release with modification options
68 69 70 71 |
# File 'lib/core/delivery.rb', line 68 def modify() deprecated __method__, "release(modification_options)" release failed=>true end |
#receiver ⇒ Receiver
Returns The parent Receiver link.
24 |
# File 'lib/core/delivery.rb', line 24 def receiver() link; end |
#reject
Reject a message, indicating to the sender that is invalid and should never be delivered again to this or any other receiver.
31 |
# File 'lib/core/delivery.rb', line 31 def reject() settle REJECTED; end |
#release(opts = nil)
Release a message, indicating to the sender that it was not processed but may be delivered again to this or another receiver.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/core/delivery.rb', line 50 def release(opts = nil) opts = { :failed => false } if (opts == false) # deprecated failed = !opts || opts.fetch(:failed, true) undeliverable = opts && opts[:undeliverable] annotations = opts && opts[:annotations] annotations = nil if annotations && annotations.empty? if failed || undeliverable || annotations d = Cproton.pn_delivery_local(@impl) Cproton.pn_disposition_set_failed(d, true) if failed Cproton.pn_disposition_set_undeliverable(d, true) if undeliverable Codec::Data.from_object(Cproton.pn_disposition_annotations(d), annotations) if annotations settle(MODIFIED) else settle(RELEASED) end end |