Proton DotNet
|
Represents an AMQP Connection which is owned by a single engine instance. More...
Public Member Functions | |
IConnection | Negotiate () |
IConnection | Negotiate (in Action< AmqpHeader > remoteAMQPHeaderHandler) |
long | Tick (long current) |
Performs a tick operation on the connection which checks that Connection Idle timeout processing is run. It is an error to call this method if the scheduled tick method has been invoked. | |
IConnection | TickAuto (in TaskFactory taskFactory) |
Convenience method which is the same as calling Engine auto tick idle checking API. | |
ISession | Session () |
Creates a new Session linked to this Connection. | |
IConnection | SessionOpenedHandler (Action< ISession > handler) |
Sets an Action for when an AMQP Begin frame is received from the remote peer. Used to process remotely initiated Sessions. Locally initiated sessions have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote Session creation. | |
IConnection | SenderOpenedHandler (Action< ISender > handler) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the sending end of a link. Used to process remotely initiated sender. Locally initiated senders have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote sender creation. If an event handler for remote sender open is registered on the session that the link is owned by then that handler will be invoked instead of this one. | |
IConnection | ReceiverOpenedHandler (Action< IReceiver > handler) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the receiving end of a link. Used to process remotely initiated receivers. Locally initiated receivers have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote receiver creation. If an event handler for remote receiver open is registered on the Session that the link is owned by then that handler will be invoked instead of this one. | |
IConnection | TransactionManagerOpenedHandler (Action< ITransactionManager > handler) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the manager side of a coordinator link. Used to process remotely initiated manager. Locally initiated managers have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote transaction manager creation. If an event handler for remote transaction manager open is registered on the Session that the link is owned by then that handler will be invoked instead of this one. | |
![]() | |
T | Open () |
Open the end point locally, sending the Open performative immediately if possible or holding it until SASL negotiations or the AMQP header exchange and other required performative exchanges has completed. The endpoint will signal any registered handler of the remote opening the endpoint once the remote performative that signals open completion arrives. | |
T | Close () |
Close the end point locally and send the closing performative immediately if possible or holds it until the Connection / Engine state allows it. If the engine encounters an error writing the performative or the engine is in a failed state from a previous error then this method will throw an exception. If the engine has been shutdown then this method will close out the local end of the endpoint and clean up any local resources before returning normally. | |
T | LocalOpenHandler (Action< T > localOpenHandler) |
Sets a Action for when an this endpoint is opened locally via a call to Open. Typically used by clients for logging or other state update event processing. Clients should not perform any blocking calls within this context. It is an error for the handler to throw an exception and the outcome of doing so is undefined. Typically used by clients as servers will typically listen to some parent resource event handler to determine if the remote is initiating a resource open. | |
T | LocalCloseHandler (Action< T > localCloseHandler) |
Sets a Action for when an this endpoint is closed locally via a call to Close. Typically used by clients for logging or other state update event processing. Clients should not perform any blocking calls within this context. It is an error for the handler to throw an exception and the outcome of doing so is undefined. | |
T | OpenHandler (Action< T > localOpenHandler) |
Sets a Action for when an AMQP Open frame is received from the remote peer. Used to process remotely initiated Connections. Locally initiated sessions have their own Action invoked instead. This method is typically used by servers to listen for the remote peer to open its endpoint, while a client would listen for the server to open its end of the endpoint once a local open has been performed. Typically used by clients as servers will typically listen to some parent resource event handler to determine if the remote is initiating a resource open. | |
T | CloseHandler (Action< T > localCloseHandler) |
Sets a EventHandler for when an AMQP closing frame is received from the remote peer. | |
T | EngineShutdownHandler (Action< IEngine > shutdownHandler) |
Sets an Action that is invoked when the engine that supports this endpoint is shutdown which indicates a desire to terminate all engine operations. Any endpoint that has been both locally and remotely closed will not receive this event as it will no longer be tracked by the parent its parent endpoint. A typical use of this event would be from a locally closed endpoint that is awaiting response from the remote. If this event fires then there will never be a remote response to any pending operations and the client or server instance should react accordingly to clean up any related resources etc. | |
Properties | |
ConnectionState | ConnectionState [get] |
Provides access to the current connection operating state. | |
ConnectionState | RemoteConnectionState [get] |
Provides access to the current connection operating state on the remote end of the connection. | |
string | ContainerId [get, set] |
Provides access to the container Id value of this connection. The value can be modified until the connection is opened after which any modification results in an exception being thrown. | |
string | RemoteContainerId [get] |
Access the remote container Id that was returned in the remote open performative. | |
string | Hostname [get, set] |
Access the name of the host (either fully qualified or relative) to which this connection is connecting to. This information may be used by the remote peer to determine the correct back-end service to connect the client to. This value will be sent in the Open performative. Note that it is illegal to set the host name to a numeric IP address or include a port number. The host name value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called. | |
string | RemoteHostname [get] |
Access the remote host name that was returned in the remote open performative. | |
ushort | ChannelMax [get, set] |
Access the channel max value for this Connection. The channel max value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called. | |
ushort | RemoteChannelMax [get] |
Access the remote channel max that was returned in the remote open performative. | |
uint | MaxFrameSize [get, set] |
Access the maximum frame size allowed for this connection, which is the largest single frame that the remote can send to this connection before it will close the connection with an error condition indicating the violation. The legal range for this value is defined as (512 - 2^32-1) bytes. The max frame size value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called. | |
uint | RemoteMaxFrameSize [get] |
Access the remote frame size that was returned in the remote open performative. | |
uint | IdleTimeout [get, set] |
Access the idle timeout value for this Connection. The idle timeout value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called. | |
uint | RemoteIdleTimeout [get] |
Access the remote idle timeout that was returned in the remote open performative. | |
ICollection< ISession > | Sessions [get] |
Access an enumerator that provides a view of all the currently tracked by this connection meaning each is either locally or remotely opened or both. | |
![]() | |
IEngine | Engine [get] |
Provides access to the engine instance that owns the resources of this endpoint and its parent. | |
IAttachments | Attachments [get] |
Access the attachments instance that is associated with this resource where the application can store data relevant to the endpoint for later use. | |
object | LinkedResource [get, set] |
Allows the endpoint to have some user defined resource linked to it which can be used to store application state data or other associated object instances with this endpoint. | |
ErrorCondition | ErrorCondition [get, set] |
Provides access to the error condition that should be applied to the AMQP frame that closes or ends this endpoint when the close method is called be the user. Setting this value after closing the endpoint has no effect. | |
ErrorCondition | RemoteErrorCondition [get] |
If the remote has closed this endpoint and provided an ErrorCondition as part of the closing AMQP performative then this method will return it. | |
bool | IsLocallyOpen [get] |
Returns true if the endpoint open was previously called and the close method has not yet been invoked. This only reflects the state on the local end and the user should also check the remote state. | |
bool | IsLocallyClosed [get] |
Returns true if the endpoint having been previously locally opened is now closed due to a call the the close method. This does not reflect the state of the remote endpoint and that should be checked separately. | |
bool | IsRemotelyOpen [get] |
Returns true if this endpoint is currently remotely open meaning that the AMQP performative that completes the open phase of this endpoint's lifetime has arrived but the performative that closes it has not. | |
bool | IsRemotelyClosed [get] |
Returns true if this endpoint is currently remotely closed meaning that the AMQP performative that completes the close phase of this endpoint's lifetime has arrived. | |
Symbol[] | OfferedCapabilities [get, set] |
Access the capabilities to be offered on to the remote when this endpoint is opened. The offered capabilities value can only be modified prior to a call to open, once the endpoint has been opened locally an error will be thrown if this method is called. | |
Symbol[] | DesiredCapabilities [get, set] |
Access the capabilities that are desired on to the remote when this endpoint is opened. The desired capabilities value can only be modified prior to a call to open, once the endpoint has been opened locally an error will be thrown if this method is called. | |
IReadOnlyDictionary< Symbol, object > | Properties [get, set] |
Access the properties that are conveyed to the remote when this endpoint is opened. The properties value can only be modified prior to a call to open, once the endpoint has been opened locally an error will be thrown if this method is called. | |
Symbol[] | RemoteOfferedCapabilities [get] |
The capabilities offered by the remote when it opened its end of the endpoint. | |
Symbol[] | RemoteDesiredCapabilities [get] |
The capabilities desired by the remote when it opened its end of the endpoint. | |
IReadOnlyDictionary< Symbol, object > | RemoteProperties [get] |
The properties sent by the remote when it opened its end of this endpoint. | |
Represents an AMQP Connection which is owned by a single engine instance.
IConnection Apache.Qpid.Proton.Engine.IConnection.Negotiate | ( | ) |
If not already negotiated this method initiates the AMQP protocol negotiation phase of the connection process sending the AMQP header to the remote peer. For a client application this could mean requesting the server to indicate if it supports the version of the protocol this client speaks. In rare cases a server could use this to preemptively send its AMQP header.
Once a header is sent the remote should respond with the AMQP Header that indicates what protocol level it supports and if there is a mismatch the the engine will be failed with an error indicating the protocol support was not successfully negotiated.
If the engine has a configured SASL layer then by starting the AMQP Header exchange this will implicitly first attempt the SASL authentication step of the connection process.
EngineStateException | If the engine has failed or was shutdown |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.Negotiate | ( | in Action< AmqpHeader > | remoteAMQPHeaderHandler | ) |
If not already negotiated this method initiates the AMQP protocol negotiation phase of the connection process sending the AMQP header to the remote peer. For a client application this could mean requesting the server to indicate if it supports the version of the protocol this client speaks. In rare cases a server could use this to preemptively send its AMQP header.
Once a header is sent the remote should respond with the AMQP Header that indicates what protocol level it supports and if there is a mismatch the the engine will be failed with an error indicating the protocol support was not successfully negotiated.
The provided remote AMQP Header handler will be called once the remote sends its AMQP Header to the either preemptively or as a response to offered AMQP Header from this peer, even if that has already happened prior to this call.
If the engine has a configured SASL layer then by starting the AMQP Header exchange this will implicitly first attempt the SASL authentication step of the connection process.
EngineStateException | If the engine has failed or was shutdown |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.ReceiverOpenedHandler | ( | Action< IReceiver > | handler | ) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the receiving end of a link. Used to process remotely initiated receivers. Locally initiated receivers have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote receiver creation. If an event handler for remote receiver open is registered on the Session that the link is owned by then that handler will be invoked instead of this one.
handler | The handler that will process the event |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.SenderOpenedHandler | ( | Action< ISender > | handler | ) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the sending end of a link. Used to process remotely initiated sender. Locally initiated senders have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote sender creation. If an event handler for remote sender open is registered on the session that the link is owned by then that handler will be invoked instead of this one.
handler | The handler that will process the event |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
ISession Apache.Qpid.Proton.Engine.IConnection.Session | ( | ) |
Creates a new Session linked to this Connection.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.SessionOpenedHandler | ( | Action< ISession > | handler | ) |
Sets an Action for when an AMQP Begin frame is received from the remote peer. Used to process remotely initiated Sessions. Locally initiated sessions have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote Session creation.
handler | The handler that will process the event |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
long Apache.Qpid.Proton.Engine.IConnection.Tick | ( | long | current | ) |
Performs a tick operation on the connection which checks that Connection Idle timeout processing is run. It is an error to call this method if the scheduled tick method has been invoked.
current | The current system tick count |
InvalidOperationException | If the engine has already been set to auto tick |
EngineStateException | If the engine has failed or was shutdown |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.TickAuto | ( | in TaskFactory | taskFactory | ) |
Convenience method which is the same as calling Engine auto tick idle checking API.
taskFactory | The single threaded task factory where are engine work is queued |
EngineStateException | If the engine has failed or was shutdown |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
IConnection Apache.Qpid.Proton.Engine.IConnection.TransactionManagerOpenedHandler | ( | Action< ITransactionManager > | handler | ) |
Sets an Action for when an AMQP Attach frame is received from the remote peer that represents the manager side of a coordinator link. Used to process remotely initiated manager. Locally initiated managers have their own Action delegate invoked instead. This method is Typically used by servers to listen for remote transaction manager creation. If an event handler for remote transaction manager open is registered on the Session that the link is owned by then that handler will be invoked instead of this one.
handler | The handler that will process the event |
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
getset |
Access the channel max value for this Connection. The channel max value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Provides access to the current connection operating state.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
getset |
Provides access to the container Id value of this connection. The value can be modified until the connection is opened after which any modification results in an exception being thrown.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
getset |
Access the name of the host (either fully qualified or relative) to which this connection is connecting to. This information may be used by the remote peer to determine the correct back-end service to connect the client to. This value will be sent in the Open performative. Note that it is illegal to set the host name to a numeric IP address or include a port number. The host name value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
getset |
Access the idle timeout value for this Connection. The idle timeout value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
getset |
Access the maximum frame size allowed for this connection, which is the largest single frame that the remote can send to this connection before it will close the connection with an error condition indicating the violation. The legal range for this value is defined as (512 - 2^32-1) bytes. The max frame size value can only be modified prior to a call to open the connection once the connection has been opened locally an error will be thrown if this method is called.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access the remote channel max that was returned in the remote open performative.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Provides access to the current connection operating state on the remote end of the connection.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access the remote container Id that was returned in the remote open performative.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access the remote host name that was returned in the remote open performative.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access the remote idle timeout that was returned in the remote open performative.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access the remote frame size that was returned in the remote open performative.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.
|
get |
Access an enumerator that provides a view of all the currently tracked by this connection meaning each is either locally or remotely opened or both.
Implemented in Apache.Qpid.Proton.Engine.Implementation.ProtonConnection.