A Connection option has at most one Qpid::Proton::Transport instance.
@private
Constructs a new instance of Connection.
You do not need to provide the underlying C struct, as this is automatically generated as needed. The argument is a convenience for returning existing Connection objects.
@param impl [pn_connection_t] The pn_connection_t struct.
# File lib/core/connection.rb, line 62 def initialize(impl = Cproton.pn_connection) super() @impl = impl @offered_capabilities = nil @desired_capabilities = nil @properties = nil @overrides = nil @collector = nil @session_policy = nil self.class.store_instance(self, :pn_connection_attachments) end
@private
# File lib/core/connection.rb, line 48 def self.wrap(impl) return nil if impl.nil? self.fetch_instance(impl, :pn_connection_attachments) || Connection.new(impl) end
@private
# File lib/core/connection.rb, line 317 def _local_condition Cproton.pn_connection_condition(@impl) end
@private
# File lib/core/connection.rb, line 322 def _remote_condition Cproton.pn_connection_remote_condition(@impl) end
Closes the connection.
Once this operation has completed, the #LOCAL_CLOSED state flag will be set.
# File lib/core/connection.rb, line 215 def close self._update_condition Cproton.pn_connection_close(@impl) end
Associates the connection with an event collector.
By doing this, key changes in the endpoint's state are reported to the connector via Event objects that can be inspected and processed.
Note that, by registering a collector, the user is requesting that an indefinite number of events be queued up on its behalf. This means that, unless the application eventual processes these events, the storage requirements for keeping them will grow without bound. So be careful and do not register a collector with a connection unless the application will process the events.
@param collector [Event::Collector] The event collector.
# File lib/core/connection.rb, line 112 def collect(collector) if collector.nil? Cproton.pn_connection_collect(@impl, nil) else Cproton.pn_connection_collect(@impl, collector.impl) end @collector = collector end
This method is used when working within the context of an event.
@return [Connection] The connection itself.
# File lib/core/connection.rb, line 86 def connection self end
# File lib/core/connection.rb, line 142 def container Cproton.pn_connection_get_container(@impl) end
# File lib/core/connection.rb, line 138 def container=(name) Cproton.pn_connection_set_container(@impl, name) end
Returns the code for a connection error.
@return [Fixnum] The error code.
# File lib/core/connection.rb, line 312 def error Cproton.pn_error_code(Cproton.pn_connection_error(@impl)) end
Returns the first link that matches the given state mask.
Examines the state of each link owned by the connection and returns the first that matches the given state mask. If the state mask contains both local and remote flags, then an exact match against those flags is performed. If the state mask contains only local or remote flags, then a match occurs if any of the local ore remote flags are set, respectively.
@param mask [Fixnum] The state mask to be matched.
@return [Link] The first matching link, or nil if none matched.
@see Endpoint#LOCAL_UNINIT @see Endpoint#LOCAL_ACTIVE @see Endpoint#LOCAL_CLOSED @see Endpoint#REMOTE_UNINIT @see Endpoint#REMOTE_ACTIVE @see Endpoint#REMOTE_CLOSED
# File lib/core/connection.rb, line 286 def link_head(mask) Link.wrap(Cproton.pn_link_head(@impl, mask)) end
Opens the connection.
# File lib/core/connection.rb, line 200 def open object_to_data(@offered_capabilities, Cproton.pn_connection_offered_capabilities(@impl)) object_to_data(@desired_capabilities, Cproton.pn_connection_desired_capabilities(@impl)) object_to_data(@properties, Cproton.pn_connection_properties(@impl)) Cproton.pn_connection_open(@impl) end
# File lib/core/connection.rb, line 74 def overrides? !@overrides.nil? end
Get the AMQP container name advertised by the remote connection endpoint.
This will return nil until the REMOTE_ACTIVE state is reached.
Any non-nil container returned by this operation will be valid until the connection is unbound from a transport, or freed, whichever happens sooner.
@return [String] The remote connection's AMQP container name.
@see container
# File lib/core/connection.rb, line 134 def remote_container Cproton.pn_connection_remote_container(@impl) end
Get the AMQP desired capabilities supplied by the remote connection endpoint.
The object returned is valid until the connection is freed. The Data object will be empty until the remote connection is opened, as indicated by the #REMOTE_ACTIVE flag.
@return [Data] The desired capabilities.
# File lib/core/connection.rb, line 181 def remote_desired_capabilities data_to_object(Cproton.pn_connection_remote_desired_capabilities(@impl)) end
Get the AMQP hostname set by the remote connection endpoint.
This will return nil until the #REMOTE_ACTIVE state is reached.
@return [String] The remote connection's AMQP hostname.
@see hostname
# File lib/core/connection.rb, line 155 def remote_hostname Cproton.pn_connection_remote_hostname(@impl) end
Get the AMQP offered capabilities suppolied by the remote connection endpoint.
This object returned is valid until the connection is freed. The Data object will be empty until the remote connection is opened, as indicated by the #REMOTE_ACTIVE flag.
@return [Data] The offered capabilities.
# File lib/core/connection.rb, line 168 def remote_offered_capabilities data_to_object(Cproton.pn_connection_remote_offered_capabilities(@impl)) end
Get the AMQP connection properties supplie by the remote connection endpoint.
The object returned is valid until the connection is freed. The Data object will be empty until the remote connection is opened, as indicated by the #REMOTE_ACTIVE flag.
@return [Data] The remote properties.
# File lib/core/connection.rb, line 194 def remote_properties data_to_object(Cproton.pn_connection_remote_properites(@impl)) end
Returns the session for this connection.
@return [Session] The session.
# File lib/core/connection.rb, line 237 def session @session ||= Session.wrap(Cproton.pn_session(@impl)) end
Returns the first session from the connection that matches the specified state mask.
Examines the state of each session owned by the connection, and returns the first session that matches the given state mask. If the state mask contains both local and remote flags, then an exact match against those flags is performed. If the state mask contains only local or remote flags, then a match occurs if a*any* of the local or remote flags are set, respectively.
@param mask [Fixnum] The state mask to be matched.
@return [Session] The first matching session, or nil if none matched.
@see Endpoint#LOCAL_UNINIT @see Endpoint#LOCAL_ACTIVE @see Endpoint#LOCAL_CLOSED @see Endpoint#REMOTE_UNINIT @see Endpoint#REMOTE_ACTIVE @see Endpoint#REMOTE_CLOSED
# File lib/core/connection.rb, line 262 def session_head(mask) Session.wrap(Cproton.pn_session_header(@impl, mask)) end
# File lib/core/connection.rb, line 78 def session_policy? !@session_policy.nil? end
Gets the endpoint current state flags
@see Endpoint#LOCAL_UNINIT @see Endpoint#LOCAL_ACTIVE @see Endpoint#LOCAL_CLOSED @see Endpoint#LOCAL_MASK
@return [Fixnum] The state flags.
# File lib/core/connection.rb, line 229 def state Cproton.pn_connection_state(@impl) end
The Transport to which this connection is bound.
@return [Transport] The transport, or nil if the Connection is unbound.
# File lib/core/connection.rb, line 94 def transport Transport.wrap(Cproton.pn_connection_transport(@impl)) end
Extracts the first delivery on the connection that has pending operations.
A readable delivery indicates message data is waiting to be read. A A writable delivery indcates that message data may be sent. An updated delivery indicates that the delivery's disposition has changed.
A delivery will never be both readable and writable, but it may be both readable or writable and updated.
@return [Delivery] The delivery, or nil if none are available.
@see Delivery#next
# File lib/core/connection.rb, line 304 def work_head Delivery.wrap(Cproton.pn_work_head(@impl)) end