Class ClientSession

java.lang.Object
org.apache.qpid.protonj2.client.impl.ClientSession
All Implemented Interfaces:
AutoCloseable, Session
Direct Known Subclasses:
ClientStreamSession

public class ClientSession extends Object implements Session
Client implementation of the Session API.
  • Method Details

    • client

      public ClientInstance client()
      Specified by:
      client in interface Session
      Returns:
      the Client instance that holds this session's Connection
    • connection

      public ClientConnection connection()
      Specified by:
      connection in interface Session
      Returns:
      the Connection that created and holds this Session.
    • openFuture

      public Future<Session> openFuture()
      Specified by:
      openFuture in interface Session
      Returns:
      a Future that will be completed when the remote opens this Session.
    • close

      public void close()
      Description copied from interface: Session
      Requests a close of the Session at the remote and waits until the Session has been fully closed or until the configured SessionOptions.closeTimeout() is exceeded.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Session
    • close

      public void close(ErrorCondition error)
      Description copied from interface: Session
      Requests a close of the Session at the remote and waits until the Session has been fully closed or until the configured SessionOptions.closeTimeout() is exceeded.
      Specified by:
      close in interface Session
      Parameters:
      error - The ErrorCondition to transmit to the remote along with the close operation.
    • closeAsync

      public Future<Session> closeAsync()
      Description copied from interface: Session
      Requests a close of the Session at the remote and returns a Future that will be completed once the session has been remotely closed or an error occurs.
      Specified by:
      closeAsync in interface Session
      Returns:
      a Future that will be completed when the remote closes this Session.
    • closeAsync

      public Future<Session> closeAsync(ErrorCondition error)
      Description copied from interface: Session
      Requests a close of the Session at the remote and returns a Future that will be completed once the session has been remotely closed or an error occurs.
      Specified by:
      closeAsync in interface Session
      Parameters:
      error - The ErrorCondition to transmit to the remote along with the close operation.
      Returns:
      a Future that will be completed when the remote closes this Session.
    • openReceiver

      public Receiver openReceiver(String address) throws ClientException
      Description copied from interface: Session
      Creates a receiver used to consume messages from the given node address.
      Specified by:
      openReceiver in interface Session
      Parameters:
      address - The source address to attach the consumer to.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openReceiver

      public Receiver openReceiver(String address, ReceiverOptions receiverOptions) throws ClientException
      Description copied from interface: Session
      Creates a receiver used to consume messages from the given node address.
      Specified by:
      openReceiver in interface Session
      Parameters:
      address - The source address to attach the consumer to.
      receiverOptions - The options for this receiver.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDurableReceiver

      public Receiver openDurableReceiver(String address, String subscriptionName) throws ClientException
      Description copied from interface: Session
      Creates a receiver used to consume messages from the given node address and configure it such that the remote create a durable node.
      Specified by:
      openDurableReceiver in interface Session
      Parameters:
      address - The source address to attach the consumer to.
      subscriptionName - The name to give the subscription (link name).
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDurableReceiver

      public Receiver openDurableReceiver(String address, String subscriptionName, ReceiverOptions receiverOptions) throws ClientException
      Description copied from interface: Session
      Creates a receiver used to consume messages from the given node address and configure it such that the remote create a durable node.
      Specified by:
      openDurableReceiver in interface Session
      Parameters:
      address - The source address to attach the consumer to.
      subscriptionName - The name to give the subscription (link name).
      receiverOptions - The options for this receiver.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDynamicReceiver

      public Receiver openDynamicReceiver() throws ClientException
      Description copied from interface: Session
      Creates a dynamic receiver used to consume messages from the given node address.
      Specified by:
      openDynamicReceiver in interface Session
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDynamicReceiver

      public Receiver openDynamicReceiver(Map<String,Object> dynamicNodeProperties) throws ClientException
      Description copied from interface: Session
      Creates a dynamic receiver used to consume messages from the given node address.
      Specified by:
      openDynamicReceiver in interface Session
      Parameters:
      dynamicNodeProperties - The dynamic node properties to be applied to the node created by the remote.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDynamicReceiver

      public Receiver openDynamicReceiver(ReceiverOptions receiverOptions) throws ClientException
      Description copied from interface: Session
      Creates a dynamic receiver used to consume messages from the given node address.
      Specified by:
      openDynamicReceiver in interface Session
      Parameters:
      receiverOptions - The options for this receiver.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openDynamicReceiver

      public Receiver openDynamicReceiver(Map<String,Object> dynamicNodeProperties, ReceiverOptions receiverOptions) throws ClientException
      Description copied from interface: Session
      Creates a dynamic receiver used to consume messages from the given node address.
      Specified by:
      openDynamicReceiver in interface Session
      Parameters:
      dynamicNodeProperties - The dynamic node properties to be applied to the node created by the remote.
      receiverOptions - The options for this receiver.
      Returns:
      the newly created Receiver
      Throws:
      ClientException - if an internal error occurs.
    • openSender

      public Sender openSender(String address) throws ClientException
      Description copied from interface: Session
      Creates a sender used to send messages to the given node address. If no address (i.e null) is specified then a sender will be established to the 'anonymous relay' and each message must specify its destination address.
      Specified by:
      openSender in interface Session
      Parameters:
      address - The target address to attach to, or null to attach to the anonymous relay.
      Returns:
      the newly created Sender.
      Throws:
      ClientException - if an internal error occurs.
    • openSender

      public Sender openSender(String address, SenderOptions senderOptions) throws ClientException
      Description copied from interface: Session
      Creates a sender used to send messages to the given node address. If no address (i.e null) is specified then a sender will be established to the 'anonymous relay' and each message must specify its destination address.
      Specified by:
      openSender in interface Session
      Parameters:
      address - The target address to attach to, or null to attach to the anonymous relay.
      senderOptions - The options for this sender.
      Returns:
      the newly created Sender.
      Throws:
      ClientException - if an internal error occurs.
    • openAnonymousSender

      public Sender openAnonymousSender() throws ClientException
      Description copied from interface: Session
      Creates a sender that is established to the 'anonymous relay' and as such each message that is sent using this sender must specify an address in its destination address field.
      Specified by:
      openAnonymousSender in interface Session
      Returns:
      the newly created Sender.
      Throws:
      ClientException - if an internal error occurs.
      ClientUnsupportedOperationException - if the remote did not signal support for anonymous relays.
    • openAnonymousSender

      public Sender openAnonymousSender(SenderOptions senderOptions) throws ClientException
      Description copied from interface: Session
      Creates a sender that is established to the 'anonymous relay' and as such each message that is sent using this sender must specify an address in its destination address field.
      Specified by:
      openAnonymousSender in interface Session
      Parameters:
      senderOptions - The options for this sender.
      Returns:
      the newly created Sender.
      Throws:
      ClientException - if an internal error occurs.
      ClientUnsupportedOperationException - if the remote did not signal support for anonymous relays.
    • properties

      public Map<String,Object> properties() throws ClientException
      Description copied from interface: Session
      Returns the properties that the remote provided upon successfully opening the Session. If the open has not completed yet this method will block to await the open response which carries the remote properties. If the remote provides no properties this method will return null.
      Specified by:
      properties in interface Session
      Returns:
      any properties provided from the remote once the session has successfully opened.
      Throws:
      ClientException - if an error occurs while obtaining the Session remote properties.
    • offeredCapabilities

      public String[] offeredCapabilities() throws ClientException
      Description copied from interface: Session
      Returns the offered capabilities that the remote provided upon successfully opening the Session. If the open has not completed yet this method will block to await the open response which carries the remote offered capabilities. If the remote provides no capabilities this method will return null.
      Specified by:
      offeredCapabilities in interface Session
      Returns:
      any capabilities provided from the remote once the session has successfully opened.
      Throws:
      ClientException - if an error occurs while obtaining the Session remote offered capabilities.
    • desiredCapabilities

      public String[] desiredCapabilities() throws ClientException
      Description copied from interface: Session
      Returns the desired capabilities that the remote provided upon successfully opening the Session. If the open has not completed yet this method will block to await the open response which carries the remote desired capabilities. If the remote provides no capabilities this method will return null.
      Specified by:
      desiredCapabilities in interface Session
      Returns:
      any desired capabilities provided from the remote once the session has successfully opened.
      Throws:
      ClientException - if an error occurs while obtaining the Session remote desired capabilities.
    • beginTransaction

      public Session beginTransaction() throws ClientException
      Description copied from interface: Session
      Opens a new transaction scoped to this Session if one is not already active. A Session that has an active transaction will perform all sends and all delivery dispositions under that active transaction. If the user wishes to send with the same session but outside of a transaction the user must commit the active transaction and not request that a new one be started. A session can only have one active transaction at a time and as such any call to begin while there is a currently active transaction will throw an ClientIllegalStateException to indicate that the operation being requested is not valid at that time. This is a blocking method that will return successfully only after a new transaction has been started.
      Specified by:
      beginTransaction in interface Session
      Returns:
      this Session instance.
      Throws:
      ClientException - if an error occurs while attempting to begin a new transaction.
    • commitTransaction

      public Session commitTransaction() throws ClientException
      Description copied from interface: Session
      Commit the currently active transaction in this Session. Commit the currently active transaction in this Session but does not start a new transaction automatically. If there is no current transaction this method will throw an ClientTransactionNotActiveException to indicate this error. If the active transaction has entered an in doubt state or was remotely rolled back this method will throw an error to indicate that the commit failed and that a new transaction need to be started by the user. When a transaction rolled back error occurs the user should assume that all work performed under that transaction has failed and will need to be attempted under a new transaction. This is a blocking method that will return successfully only after the current transaction has been committed.
      Specified by:
      commitTransaction in interface Session
      Returns:
      this Session instance.
      Throws:
      ClientException - if an error occurs while attempting to commit the current transaction.
    • rollbackTransaction

      public Session rollbackTransaction() throws ClientException
      Description copied from interface: Session
      Roll back the currently active transaction in this Session. Roll back the currently active transaction in this Session but does not automatically start a new transaction. If there is no current transaction this method will throw an ClientTransactionNotActiveException to indicate this error. If the active transaction has entered an in doubt state or was remotely rolled back this method will throw an error to indicate that the roll back failed and that a new transaction need to be started by the user.
      Specified by:
      rollbackTransaction in interface Session
      Returns:
      this Session instance.
      Throws:
      ClientException - if an error occurs while attempting to roll back the current transaction.
    • nextReceiver

      public Receiver nextReceiver() throws ClientException
      Description copied from interface: Session
      Waits indefinitely for a receiver created from this session to have a delivery ready for receipt. The selection of the next receiver when more than one exits which has pending deliveries is based upon the configured value of the SessionOptions.defaultNextReceiverPolicy() used to create this session or if none was provided then the value is taken from the value of the ConnectionOptions.defaultNextReceiverPolicy().
      Specified by:
      nextReceiver in interface Session
      Returns:
      the next receiver that has a pending delivery available based on policy.
      Throws:
      ClientException - if an internal error occurs.
    • nextReceiver

      public Receiver nextReceiver(long timeout, TimeUnit unit) throws ClientException
      Description copied from interface: Session
      Waits for the given duration for a receiver created from this session to have a delivery ready for receipt. The selection of the next receiver when more than one exits which has pending deliveries is based upon the configured value of the SessionOptions.defaultNextReceiverPolicy() used to create this session or if none was provided then the value is taken from the value of the ConnectionOptions.defaultNextReceiverPolicy(). If no receiver has an available delivery within the given timeout this method returns null.
      Specified by:
      nextReceiver in interface Session
      Parameters:
      timeout - The timeout value used to control how long the method waits for a new Delivery to be available.
      unit - The unit of time that the given timeout represents.
      Returns:
      the next receiver that has a pending delivery available based on policy.
      Throws:
      ClientException - if an internal error occurs.
    • nextReceiver

      public Receiver nextReceiver(NextReceiverPolicy policy) throws ClientException
      Description copied from interface: Session
      Waits indefinitely for a receiver created from this session to have a delivery ready for receipt. The selection of the next receiver when more than one exits which has pending deliveries is based upon the value of the NextReceiverPolicy that is provided by the caller.
      Specified by:
      nextReceiver in interface Session
      Parameters:
      policy - The policy to apply when selecting the next receiver.
      Returns:
      the next receiver that has a pending delivery available based on policy.
      Throws:
      ClientException - if an internal error occurs.
    • nextReceiver

      public Receiver nextReceiver(NextReceiverPolicy policy, long timeout, TimeUnit unit) throws ClientException
      Description copied from interface: Session
      Waits for the given duration for a receiver created from this session to have a delivery ready for receipt. The selection of the next receiver when more than one exits which has pending deliveries is based upon the value of the NextReceiverPolicy provided by the caller. If no receiver has an available delivery within the given timeout this method returns null.
      Specified by:
      nextReceiver in interface Session
      Parameters:
      policy - The policy to apply when selecting the next receiver.
      timeout - The timeout value used to control how long the method waits for a new Delivery to be available.
      unit - The unit of time that the given timeout represents.
      Returns:
      the next receiver that has a pending delivery available based on policy.
      Throws:
      ClientException - if an internal error occurs.
    • checkClosedOrFailed

      protected void checkClosedOrFailed() throws ClientException
      Throws:
      ClientException