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
Constants included from Util::Deprecation
Util::Deprecation::DEPRECATE_FULL_TRACE, Util::Deprecation::MATCH_DIR
Instance Attribute Summary
Attributes included from Util::Wrapper
Instance Method Summary collapse
-
#aborted? ⇒ Boolean
True if the transfer was aborted by the sender.
-
#accept ⇒ Object
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 ⇒ Object
deprecated
Deprecated.
use #release with modification options
-
#receiver ⇒ Receiver
The parent Receiver link.
-
#reject ⇒ Object
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) ⇒ Object
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
Methods included from Qpid::Proton::Disposition::State::ClassMethods
Methods included from Util::Wrapper
included, #inspect, registry, #to_s
Methods included from Util::Deprecation
deprecated, #deprecated, included
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 ⇒ Object
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 ⇒ Object
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 ⇒ Object
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) ⇒ Object
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 |