Class: Qpid::Proton::Link
Overview
The base for both Sender and Receiver, providing common functionality between both ends.
A Link has a single parent Qpid::Proton::Session instance.
Constant Summary collapse
- SND_UNSETTLED =
The sender will send all deliveries initially unsettled.
Cproton::PN_SND_UNSETTLED
- SND_SETTLED =
The sender will send all deliveries settled to the receiver.
Cproton::PN_SND_SETTLED
- SND_MIXED =
The sender may send a mixture of settled and unsettled deliveries.
Cproton::PN_SND_MIXED
- RCV_FIRST =
The receiver will settle deliveries regardless of what the sender does.
Cproton::PN_RCV_FIRST
- RCV_SECOND =
The receiver will only settle deliveries after the sender settles.
Cproton::PN_RCV_SECOND
Constants inherited from Endpoint
Endpoint::LOCAL_ACTIVE, Endpoint::LOCAL_CLOSED, Endpoint::LOCAL_MASK, Endpoint::LOCAL_UNINIT, Endpoint::REMOTE_ACTIVE, Endpoint::REMOTE_CLOSED, Endpoint::REMOTE_MASK, Endpoint::REMOTE_UNINIT
Instance Method Summary collapse
- #==(other)
-
#advance ⇒ Boolean
Advance the current delivery to the next on the link.
-
#close(error = nil)
Close the local end of the link.
-
#connection ⇒ Connection
Returns the parent connection.
-
#current ⇒ Delivery
Returns the current delivery.
-
#delivery(tag)
deprecated
Deprecated.
use Sender#send
-
#drained ⇒ Integer
Drains excess credit.
-
#error ⇒ Error
Returns additional error information.
-
#next(state_mask)
deprecated
Deprecated.
use Connection#each_link
-
#rcv_settle_mode ⇒ Integer
Returns the local receiver settle mode.
-
#rcv_settle_mode=(mode)
Sets the local receiver settle mode.
-
#remote_source ⇒ Terminus
Returns a representation of the remotely defined source terminus.
-
#remote_target ⇒ Terminus
Returns a representation of the remotely defined target terminus.
-
#session ⇒ Session
Returns the parent session.
-
#snd_settle_mode ⇒ Integer
Returns the local sender settle mode.
-
#snd_settle_mode=(mode)
Sets the local sender settle mode.
-
#source ⇒ Terminus
Returns the locally defined source terminus.
-
#target ⇒ Terminus
Returns the locally defined target terminus.
Methods inherited from Endpoint
#closed?, #local_closed?, #local_open?, #local_uninit?, #open?, #remote_closed?, #remote_open?, #remote_uninit?, #transport, #work_queue
Instance Method Details
#==(other)
355 356 357 358 |
# File 'lib/core/link.rb', line 355 def ==(other) other.respond_to?(:impl) && (Cproton.pni_address_of(other.impl) == Cproton.pni_address_of(@impl)) end |
#advance ⇒ Boolean
Advance the current delivery to the next on the link.
For sending links, this operation is used to finish sending message data for the current outgoing delivery and move on to the next outgoing delivery (if any).
For receiving links, this operatoin is used to finish accessing message data from the current incoming delivery and move on to the next incoming delivery (if any).
80 |
# File 'lib/core/link.rb', line 80 proton_caller :advance |
#close(error = nil)
Close the local end of the link. The remote end may or may not be closed.
56 57 58 59 |
# File 'lib/core/link.rb', line 56 def close(error=nil) Condition.assign(_local_condition, error) Cproton.pn_link_close(@impl) end |
#connection ⇒ Connection
Returns the parent connection.
273 274 275 |
# File 'lib/core/link.rb', line 273 def connection self.session.connection end |
#current ⇒ Delivery
Returns the current delivery.
Each link maintains a sequence of deliveries in the order they were created, along with a reference to the current delivery. All send and receive operations on a link take place on the current delivery. If a link has no current delivery, the current delivery is automatically pointed to the next delivery created on the link.
Once initialized, the current delivery remains the same until it is changed by advancing, or until it is settled.
300 301 302 |
# File 'lib/core/link.rb', line 300 def current Delivery.wrap(Cproton.pn_link_current(@impl)) end |
#delivery(tag)
use Sender#send
279 280 281 282 |
# File 'lib/core/link.rb', line 279 def delivery(tag) deprecated __method__, "Sender#send" Delivery.new(Cproton.pn_delivery(@impl, tag)) end |
#drained ⇒ Integer
Drains excess credit.
When a link is in drain mode, the sender must use all excess credit immediately and release any excess credit back to the receiver if there are no deliveries available to send.
When invoked on a Sender that is in drain mode, this operation will release all excess credit back to the receiver and return the number of credits released back to the sender. If the link is not in drain mode, this operation is a noop.
When invoked on a Receiver, this operation will return and reset the number of credits the sender has released back to it.
197 |
# File 'lib/core/link.rb', line 197 proton_caller :drained |
#error ⇒ Error
Returns additional error information.
Whenever a link operation fails (i.e., returns an error code) additional error details can be obtained from this method. Ther error object that is returned may also be used to clear the error condition.
220 221 222 |
# File 'lib/core/link.rb', line 220 def error Cproton.pn_link_error(@impl) end |
#next(state_mask)
use Connection#each_link
225 226 227 228 |
# File 'lib/core/link.rb', line 225 def next(state_mask) deprecated __method__, "Session#each_link, Connection#each_link" return Link.wrap(Cproton.pn_link_next(@impl, state_mask)) end |
#rcv_settle_mode ⇒ Integer
Returns the local receiver settle mode.
341 342 343 |
# File 'lib/core/link.rb', line 341 def rcv_settle_mode Cproton.pn_link_rcv_settle_mode(@impl) end |
#rcv_settle_mode=(mode)
Sets the local receiver settle mode.
333 334 335 |
# File 'lib/core/link.rb', line 333 def rcv_settle_mode=(mode) Cproton.pn_link_set_rcv_settle_mode(@impl, mode) end |
#remote_source ⇒ Terminus
Returns a representation of the remotely defined source terminus.
249 250 251 |
# File 'lib/core/link.rb', line 249 def remote_source Terminus.new(Cproton.pn_link_remote_source(@impl)) end |
#remote_target ⇒ Terminus
Returns a representation of the remotely defined target terminus.
257 258 259 |
# File 'lib/core/link.rb', line 257 def remote_target Terminus.new(Cproton.pn_link_remote_target(@impl)) end |
#session ⇒ Session
Returns the parent session.
265 266 267 |
# File 'lib/core/link.rb', line 265 def session Session.wrap(Cproton.pn_link_session(@impl)) end |
#snd_settle_mode ⇒ Integer
Returns the local sender settle mode.
322 323 324 |
# File 'lib/core/link.rb', line 322 def snd_settle_mode Cproton.pn_link_snd_settle_mode(@impl) end |
#snd_settle_mode=(mode)
Sets the local sender settle mode.
312 313 314 |
# File 'lib/core/link.rb', line 312 def snd_settle_mode=(mode) Cproton.pn_link_set_snd_settle_mode(@impl, mode) end |