Class ProtonSession
- java.lang.Object
-
- org.apache.qpid.protonj2.engine.impl.ProtonEndpoint<Session>
-
- org.apache.qpid.protonj2.engine.impl.ProtonSession
-
-
Field Summary
-
Fields inherited from class org.apache.qpid.protonj2.engine.impl.ProtonEndpoint
engine
-
-
Constructor Summary
Constructors Constructor Description ProtonSession(ProtonConnection connection, int localChannel)
Creates a newProtonSession
instance bound to the givenProtonConnection
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ProtonSession
close()
Close the end point locally and send the closing performative immediately if possible or holds it until the Connection / Engine state allows it.TransactionController
coordinator(java.lang.String name)
Create a newTransactionController
using the provided name.ProtonSession
deliveryReadHandler(EventHandler<IncomingDelivery> deliveryReadHandler)
Allows monitoring of incoming deliveries to receivers attached to thisSession
.ProtonConnection
getConnection()
Symbol[]
getDesiredCapabilities()
long
getHandleMax()
int
getIncomingCapacity()
int
getLocalChannel()
Symbol[]
getOfferedCapabilities()
int
getOutgoingCapacity()
ProtonConnection
getParent()
Gets the parent of thisEndpoint
which can be itself forConnection
instance.java.util.Map<Symbol,java.lang.Object>
getProperties()
int
getRemainingIncomingCapacity()
int
getRemainingOutgoingCapacity()
int
getRemoteChannel()
Symbol[]
getRemoteDesiredCapabilities()
Symbol[]
getRemoteOfferedCapabilities()
java.util.Map<Symbol,java.lang.Object>
getRemoteProperties()
SessionState
getRemoteState()
SessionState
getState()
boolean
isLocallyClosed()
Returns true if thisEndpoint
is currently locally closed meaning that a call to theEndpoint.close()
method has occurred.boolean
isLocallyOpen()
Returns true if thisEndpoint
is currently locally open meaning that theEndpoint.open()
has been called but theEndpoint.close()
has not.boolean
isRemotelyClosed()
boolean
isRemotelyOpen()
java.util.Set<Link<?>>
links()
ProtonSession
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.ProtonReceiver
receiver(java.lang.String name)
Create a newReceiver
link using the provided nameProtonSession
receiverOpenHandler(EventHandler<Receiver> remoteReceiverOpenEventHandler)
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a receiving link.java.util.Set<ProtonReceiver>
receivers()
ProtonSender
sender(java.lang.String name)
Create a newSender
link using the provided name.ProtonSession
senderOpenHandler(EventHandler<Sender> remoteSenderOpenEventHandler)
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a sending link.java.util.Set<ProtonSender>
senders()
ProtonSession
setDesiredCapabilities(Symbol... capabilities)
Sets the capabilities that are desired from the remote when thisEndpoint
is opened.Session
setHandleMax(long handleMax)
Set the handle max value for this Session.Session
setIncomingCapacity(int incomingCapacity)
Sets the maximum number of bytes this session can be sent from the remote.ProtonSession
setOfferedCapabilities(Symbol... capabilities)
Sets the capabilities to be offered on to the remote when thisEndpoint
is opened.Session
setOutgoingCapacity(int outgoingCapacity)
Sets the maximum number of bytes this session can be write before blocking additional sends until the written bytes are known to have been flushed to the write.ProtonSession
setProperties(java.util.Map<Symbol,java.lang.Object> properties)
Sets the properties to be sent to the remote when thisEndpoint
is Opened.ProtonSession
transactionManagerOpenHandler(EventHandler<TransactionManager> remoteTxnManagerOpenEventHandler)
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a transaction coordination link.-
Methods inherited from class org.apache.qpid.protonj2.engine.impl.ProtonEndpoint
closeHandler, engineShutdownHandler, getAttachments, getCondition, getEngine, getLinkedResource, getLinkedResource, getRemoteCondition, localCloseHandler, localOpenHandler, openHandler, setCondition, setLinkedResource
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.qpid.protonj2.engine.Endpoint
closeHandler, engineShutdownHandler, getAttachments, getCondition, getEngine, getLinkedResource, getLinkedResource, getRemoteCondition, localCloseHandler, localOpenHandler, openHandler, setCondition, setLinkedResource
-
-
-
-
Constructor Detail
-
ProtonSession
public ProtonSession(ProtonConnection connection, int localChannel)
Creates a newProtonSession
instance bound to the givenProtonConnection
.- Parameters:
connection
- The connection that is the parent of the session instance.localChannel
- The local channel onto which this session is bound.
-
-
Method Detail
-
getConnection
public ProtonConnection getConnection()
- Specified by:
getConnection
in interfaceSession
- Returns:
- the parent
Connection
for this Session.
-
getParent
public ProtonConnection getParent()
Description copied from interface:Endpoint
Gets the parent of thisEndpoint
which can be itself forConnection
instance.
-
getLocalChannel
public int getLocalChannel()
- Returns:
- the local channel onto which this
Session
is bound.
-
getRemoteChannel
public int getRemoteChannel()
- Returns:
- the remote channel onto which this
Session
is bound or -1 if not yet remotely opened.
-
getState
public SessionState getState()
-
getRemoteState
public SessionState getRemoteState()
- Specified by:
getRemoteState
in interfaceSession
- Returns:
- the remote session state (as last communicated)
-
open
public ProtonSession open() throws java.lang.IllegalStateException, EngineStateException
Description copied from interface:Endpoint
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 end point will signal any registered handler of the remote opening the Connection once the remote performative that signals open completion arrives.- Specified by:
open
in interfaceEndpoint<Session>
- Returns:
- this
Endpoint
instance. - Throws:
EngineStateException
- if an error occurs opening the Connection or the Engine is shutdown.java.lang.IllegalStateException
-
close
public ProtonSession close() throws EngineFailedException
Description copied from interface:Endpoint
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 theEndpoint
and clean up any local resources before returning normally.- Specified by:
close
in interfaceEndpoint<Session>
- Returns:
- this
Endpoint
instance. - Throws:
EngineFailedException
- if an error occurs closing the end point or the Engine is in a failed state.
-
isLocallyOpen
public boolean isLocallyOpen()
Description copied from interface:Endpoint
Returns true if thisEndpoint
is currently locally open meaning that theEndpoint.open()
has been called but theEndpoint.close()
has not.- Specified by:
isLocallyOpen
in interfaceEndpoint<Session>
- Returns:
true
if theEndpoint
is locally open.- See Also:
Endpoint.isLocallyClosed()
-
isLocallyClosed
public boolean isLocallyClosed()
Description copied from interface:Endpoint
Returns true if thisEndpoint
is currently locally closed meaning that a call to theEndpoint.close()
method has occurred.- Specified by:
isLocallyClosed
in interfaceEndpoint<Session>
- Returns:
true
if theEndpoint
is locally closed.- See Also:
Endpoint.isLocallyOpen()
-
setIncomingCapacity
public Session setIncomingCapacity(int incomingCapacity)
Description copied from interface:Session
Sets the maximum number of bytes this session can be sent from the remote.- Specified by:
setIncomingCapacity
in interfaceSession
- Parameters:
incomingCapacity
- maximum number of incoming bytes this session will allow- Returns:
- this
Session
instance.
-
getIncomingCapacity
public int getIncomingCapacity()
- Specified by:
getIncomingCapacity
in interfaceSession
- Returns:
- the current incoming capacity of this session.
-
getRemainingIncomingCapacity
public int getRemainingIncomingCapacity()
- Specified by:
getRemainingIncomingCapacity
in interfaceSession
- Returns:
- the remaining session capacity based on how many bytes are currently pending,
-
setOutgoingCapacity
public Session setOutgoingCapacity(int outgoingCapacity)
Description copied from interface:Session
Sets the maximum number of bytes this session can be write before blocking additional sends until the written bytes are known to have been flushed to the write. This limit is intended to deal with issues of memory allocation when the I/O layer allows for asynchronous writes and finer grained control over the pending write buffers is needed.- Specified by:
setOutgoingCapacity
in interfaceSession
- Parameters:
outgoingCapacity
- maximum number of outgoing bytes this session will allow before stopping senders from sending.- Returns:
- this
Session
instance.
-
getOutgoingCapacity
public int getOutgoingCapacity()
- Specified by:
getOutgoingCapacity
in interfaceSession
- Returns:
- the current outgoing capacity limit of this session.
-
getRemainingOutgoingCapacity
public int getRemainingOutgoingCapacity()
- Specified by:
getRemainingOutgoingCapacity
in interfaceSession
- Returns:
- the remaining session outgoing capacity based on how many bytes are currently pending,
-
setHandleMax
public Session setHandleMax(long handleMax) throws java.lang.IllegalStateException
Description copied from interface:Session
Set the handle max value for this Session. The handle max value can only be modified prior to a call toEndpoint.open()
, once the session has been opened locally an error will be thrown if this method is called.- Specified by:
setHandleMax
in interfaceSession
- Parameters:
handleMax
- The value to set for handle max when opening the session.- Returns:
- this
Session
instance. - Throws:
java.lang.IllegalStateException
- if the Session has already been opened.
-
getHandleMax
public long getHandleMax()
- Specified by:
getHandleMax
in interfaceSession
- Returns:
- the currently configured handle max for this
Session
-
setProperties
public ProtonSession setProperties(java.util.Map<Symbol,java.lang.Object> properties)
Description copied from interface:Endpoint
Sets the properties to be sent to the remote when thisEndpoint
is Opened. TheEndpoint
properties value can only be modified prior to a call toEndpoint.open()
, once theEndpoint
has been opened locally an error will be thrown if this method is called.- Specified by:
setProperties
in interfaceEndpoint<Session>
- Parameters:
properties
- The properties that will be sent to the remote when this Connection is opened.- Returns:
- this
Endpoint
instance.
-
getProperties
public java.util.Map<Symbol,java.lang.Object> getProperties()
- Specified by:
getProperties
in interfaceEndpoint<Session>
- Returns:
- the configured properties sent to the remote when this Connection is opened.
-
setOfferedCapabilities
public ProtonSession setOfferedCapabilities(Symbol... capabilities)
Description copied from interface:Endpoint
Sets the capabilities to be offered on to the remote when thisEndpoint
is opened. The offered capabilities value can only be modified prior to a call toEndpoint.open()
, once theEndpoint
has been opened locally an error will be thrown if this method is called.- Specified by:
setOfferedCapabilities
in interfaceEndpoint<Session>
- Parameters:
capabilities
- The capabilities to be offered to the remote when theEndpoint
is opened.- Returns:
- this
Endpoint
instance.
-
getOfferedCapabilities
public Symbol[] getOfferedCapabilities()
- Specified by:
getOfferedCapabilities
in interfaceEndpoint<Session>
- Returns:
- the configured capabilities that are offered to the remote when the
Endpoint
is opened.
-
setDesiredCapabilities
public ProtonSession setDesiredCapabilities(Symbol... capabilities)
Description copied from interface:Endpoint
Sets the capabilities that are desired from the remote when thisEndpoint
is opened. The desired capabilities value can only be modified prior to a call toEndpoint.open()
, once theEndpoint
has been opened locally an error will be thrown if this method is called.- Specified by:
setDesiredCapabilities
in interfaceEndpoint<Session>
- Parameters:
capabilities
- The capabilities desired from the remote when theEndpoint
is opened.- Returns:
- this
Endpoint
instance.
-
getDesiredCapabilities
public Symbol[] getDesiredCapabilities()
- Specified by:
getDesiredCapabilities
in interfaceEndpoint<Session>
- Returns:
- the configured desired capabilities that are sent to the remote when the Connection is opened.
-
senders
public java.util.Set<ProtonSender> senders()
Description copied from interface:Session
-
receivers
public java.util.Set<ProtonReceiver> receivers()
Description copied from interface:Session
-
isRemotelyOpen
public boolean isRemotelyOpen()
Description copied from interface:Endpoint
Returns true if thisEndpoint
is currently remotely open meaning that the AMQP performative that completes the open phase of thisEndpoint
's lifetime has arrived but the performative that closes it has not.- Specified by:
isRemotelyOpen
in interfaceEndpoint<Session>
- Returns:
true
if theEndpoint
is remotely open.- See Also:
Endpoint.isRemotelyClosed()
-
isRemotelyClosed
public boolean isRemotelyClosed()
Description copied from interface:Endpoint
Returns true if thisEndpoint
is currently remotely closed meaning that the AMQP performative that completes the close phase of thisEndpoint
's lifetime has arrived.- Specified by:
isRemotelyClosed
in interfaceEndpoint<Session>
- Returns:
true
if theEndpoint
is remotely closed.- See Also:
Endpoint.isRemotelyOpen()
-
getRemoteOfferedCapabilities
public Symbol[] getRemoteOfferedCapabilities()
- Specified by:
getRemoteOfferedCapabilities
in interfaceEndpoint<Session>
- Returns:
- the capabilities offered by the remote when it opened its end of the
Endpoint
.
-
getRemoteDesiredCapabilities
public Symbol[] getRemoteDesiredCapabilities()
- Specified by:
getRemoteDesiredCapabilities
in interfaceEndpoint<Session>
- Returns:
- the capabilities desired by the remote when it opened its end of the
Endpoint
.
-
getRemoteProperties
public java.util.Map<Symbol,java.lang.Object> getRemoteProperties()
- Specified by:
getRemoteProperties
in interfaceEndpoint<Session>
- Returns:
- the properties sent by the remote when it opened its end of the
Endpoint
.
-
sender
public ProtonSender sender(java.lang.String name)
Description copied from interface:Session
Create a newSender
link using the provided name.
-
receiver
public ProtonReceiver receiver(java.lang.String name)
Description copied from interface:Session
Create a newReceiver
link using the provided name
-
coordinator
public TransactionController coordinator(java.lang.String name) throws java.lang.IllegalStateException
Description copied from interface:Session
Create a newTransactionController
using the provided name.- Specified by:
coordinator
in interfaceSession
- Parameters:
name
- The name to assign to the createdTransactionController
- Returns:
- a newly created
TransactionController
instance. - Throws:
java.lang.IllegalStateException
- if theSession
has already been closed.
-
senderOpenHandler
public ProtonSession senderOpenHandler(EventHandler<Sender> remoteSenderOpenEventHandler)
Description copied from interface:Session
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a sending link. Used to process remotely initiated sending link. Locally initiated links have their own EventHandler invoked instead. This method is Typically used by servers to listen for remote Receiver creation. If an event handler for remote sender open is registered on this Session for a link scoped to it then this handler will be invoked instead of the variant in the Connection API.- Specified by:
senderOpenHandler
in interfaceSession
- Parameters:
remoteSenderOpenEventHandler
- the EventHandler that will be signaled when a sender link is remotely opened.- Returns:
- this session for chaining
-
receiverOpenHandler
public ProtonSession receiverOpenHandler(EventHandler<Receiver> remoteReceiverOpenEventHandler)
Description copied from interface:Session
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a receiving link. Used to process remotely initiated receiving link. Locally initiated links have their own EventHandler 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 this Session for a link scoped to it then this handler will be invoked instead of the variant in the Connection API.- Specified by:
receiverOpenHandler
in interfaceSession
- Parameters:
remoteReceiverOpenEventHandler
- the EventHandler that will be signaled when a receiver link is remotely opened.- Returns:
- this session for chaining
-
transactionManagerOpenHandler
public ProtonSession transactionManagerOpenHandler(EventHandler<TransactionManager> remoteTxnManagerOpenEventHandler)
Description copied from interface:Session
Sets aEventHandler
for when an AMQP Attach frame is received from the remote peer for a transaction coordination link. Used to process remotely initiated transaction manager link. Locally initiated links have their own EventHandler invoked instead. This method is Typically used by servers to listen for remoteTransactionController
creation. If an event handler for remoteTransactionController
open is registered on this Session for aTransactionController
scoped to it then this handler will be invoked instead of the variant in theConnection
API.- Specified by:
transactionManagerOpenHandler
in interfaceSession
- Parameters:
remoteTxnManagerOpenEventHandler
- the EventHandler that will be signaled when aTransactionController
link is remotely opened.- Returns:
- this Session for chaining
-
deliveryReadHandler
public ProtonSession deliveryReadHandler(EventHandler<IncomingDelivery> deliveryReadHandler)
Description copied from interface:Session
Allows monitoring of incoming deliveries to receivers attached to thisSession
. TheReceiver
that is the target of the incoming delivery will be notified first of the incoming delivery and any processing should be done using theReceiver.deliveryReadHandler(EventHandler)
. This event point will be trigger only after theReceiver
level handler and should be used to monitor deliveries passing through a session for logging or other state related actions performed by the service managing this session.- Specified by:
deliveryReadHandler
in interfaceSession
- Parameters:
deliveryReadHandler
- The delivery that was read which contains- Returns:
- this Session for chaining
-
-