Class TransportConnection

java.lang.Object
org.apache.activemq.broker.TransportConnection
All Implemented Interfaces:
Connection, org.apache.activemq.Service, org.apache.activemq.state.CommandVisitor, org.apache.activemq.thread.Task
Direct Known Subclasses:
ManagedTransportConnection

public class TransportConnection extends Object implements Connection, org.apache.activemq.thread.Task, org.apache.activemq.state.CommandVisitor
  • Field Details

    • broker

      protected final Broker broker
    • brokerService

      protected final BrokerService brokerService
    • connector

      protected final TransportConnector connector
    • brokerConnectionStates

      protected final Map<org.apache.activemq.command.ConnectionId,org.apache.activemq.state.ConnectionState> brokerConnectionStates
    • brokerInfo

      protected org.apache.activemq.command.BrokerInfo brokerInfo
    • dispatchQueue

      protected final List<org.apache.activemq.command.Command> dispatchQueue
    • taskRunner

      protected org.apache.activemq.thread.TaskRunner taskRunner
    • transportException

      protected final AtomicReference<Throwable> transportException
    • dispatchStopped

      protected AtomicBoolean dispatchStopped
  • Constructor Details

    • TransportConnection

      public TransportConnection(TransportConnector connector, org.apache.activemq.transport.Transport transport, Broker broker, org.apache.activemq.thread.TaskRunnerFactory taskRunnerFactory, org.apache.activemq.thread.TaskRunnerFactory stopTaskRunnerFactory)
      Parameters:
      taskRunnerFactory - - can be null if you want direct dispatch to the transport else commands are sent async.
      stopTaskRunnerFactory - - can not be null, used for stopping this connection.
  • Method Details

    • getDispatchQueueSize

      public int getDispatchQueueSize()
      Returns the number of messages to be dispatched to this connection
      Specified by:
      getDispatchQueueSize in interface Connection
      Returns:
      size of dispatch queue
    • serviceTransportException

      public void serviceTransportException(IOException e)
    • serviceExceptionAsync

      public void serviceExceptionAsync(IOException e)
      Calls the serviceException method in an async thread. Since handling a service exception closes a socket, we should not tie up broker threads since client sockets may hang or cause deadlocks.
      Specified by:
      serviceExceptionAsync in interface Connection
    • serviceException

      public void serviceException(Throwable e)
      Closes a clients connection due to a detected error. Errors are ignored if: the client is closing or broker is closing. Otherwise, the connection error transmitted to the client before stopping it's transport.
      Specified by:
      serviceException in interface Connection
    • service

      public org.apache.activemq.command.Response service(org.apache.activemq.command.Command command)
      Description copied from interface: Connection
      Services a client command and submits it to the broker.
      Specified by:
      service in interface Connection
      Returns:
      Response
    • processKeepAlive

      public org.apache.activemq.command.Response processKeepAlive(org.apache.activemq.command.KeepAliveInfo info) throws Exception
      Specified by:
      processKeepAlive in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveSubscription

      public org.apache.activemq.command.Response processRemoveSubscription(org.apache.activemq.command.RemoveSubscriptionInfo info) throws Exception
      Specified by:
      processRemoveSubscription in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processWireFormat

      public org.apache.activemq.command.Response processWireFormat(org.apache.activemq.command.WireFormatInfo info) throws Exception
      Specified by:
      processWireFormat in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processShutdown

      public org.apache.activemq.command.Response processShutdown(org.apache.activemq.command.ShutdownInfo info) throws Exception
      Specified by:
      processShutdown in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processFlush

      public org.apache.activemq.command.Response processFlush(org.apache.activemq.command.FlushCommand command) throws Exception
      Specified by:
      processFlush in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processBeginTransaction

      public org.apache.activemq.command.Response processBeginTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processBeginTransaction in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • getActiveTransactionCount

      public int getActiveTransactionCount()
      Description copied from interface: Connection
      Returns the number of active transactions established on this Connection.
      Specified by:
      getActiveTransactionCount in interface Connection
      Returns:
      the number of active transactions established on this Connection..
    • getOldestActiveTransactionDuration

      public Long getOldestActiveTransactionDuration()
      Description copied from interface: Connection
      Returns the number of active transactions established on this Connection.
      Specified by:
      getOldestActiveTransactionDuration in interface Connection
      Returns:
      the number of active transactions established on this Connection..
    • processEndTransaction

      public org.apache.activemq.command.Response processEndTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processEndTransaction in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processPrepareTransaction

      public org.apache.activemq.command.Response processPrepareTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processPrepareTransaction in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processCommitTransactionOnePhase

      public org.apache.activemq.command.Response processCommitTransactionOnePhase(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processCommitTransactionOnePhase in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processCommitTransactionTwoPhase

      public org.apache.activemq.command.Response processCommitTransactionTwoPhase(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processCommitTransactionTwoPhase in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRollbackTransaction

      public org.apache.activemq.command.Response processRollbackTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processRollbackTransaction in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processForgetTransaction

      public org.apache.activemq.command.Response processForgetTransaction(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processForgetTransaction in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRecoverTransactions

      public org.apache.activemq.command.Response processRecoverTransactions(org.apache.activemq.command.TransactionInfo info) throws Exception
      Specified by:
      processRecoverTransactions in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processMessage

      public org.apache.activemq.command.Response processMessage(org.apache.activemq.command.Message messageSend) throws Exception
      Specified by:
      processMessage in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processMessageAck

      public org.apache.activemq.command.Response processMessageAck(org.apache.activemq.command.MessageAck ack) throws Exception
      Specified by:
      processMessageAck in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processMessagePull

      public org.apache.activemq.command.Response processMessagePull(org.apache.activemq.command.MessagePull pull) throws Exception
      Specified by:
      processMessagePull in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processMessageDispatchNotification

      public org.apache.activemq.command.Response processMessageDispatchNotification(org.apache.activemq.command.MessageDispatchNotification notification) throws Exception
      Specified by:
      processMessageDispatchNotification in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processAddDestination

      public org.apache.activemq.command.Response processAddDestination(org.apache.activemq.command.DestinationInfo info) throws Exception
      Specified by:
      processAddDestination in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveDestination

      public org.apache.activemq.command.Response processRemoveDestination(org.apache.activemq.command.DestinationInfo info) throws Exception
      Specified by:
      processRemoveDestination in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processAddProducer

      public org.apache.activemq.command.Response processAddProducer(org.apache.activemq.command.ProducerInfo info) throws Exception
      Specified by:
      processAddProducer in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveProducer

      public org.apache.activemq.command.Response processRemoveProducer(org.apache.activemq.command.ProducerId id) throws Exception
      Specified by:
      processRemoveProducer in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processAddConsumer

      public org.apache.activemq.command.Response processAddConsumer(org.apache.activemq.command.ConsumerInfo info) throws Exception
      Specified by:
      processAddConsumer in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveConsumer

      public org.apache.activemq.command.Response processRemoveConsumer(org.apache.activemq.command.ConsumerId id, long lastDeliveredSequenceId) throws Exception
      Specified by:
      processRemoveConsumer in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processAddSession

      public org.apache.activemq.command.Response processAddSession(org.apache.activemq.command.SessionInfo info) throws Exception
      Specified by:
      processAddSession in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveSession

      public org.apache.activemq.command.Response processRemoveSession(org.apache.activemq.command.SessionId id, long lastDeliveredSequenceId) throws Exception
      Specified by:
      processRemoveSession in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processAddConnection

      public org.apache.activemq.command.Response processAddConnection(org.apache.activemq.command.ConnectionInfo info) throws Exception
      Specified by:
      processAddConnection in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processRemoveConnection

      public org.apache.activemq.command.Response processRemoveConnection(org.apache.activemq.command.ConnectionId id, long lastDeliveredSequenceId) throws InterruptedException
      Specified by:
      processRemoveConnection in interface org.apache.activemq.state.CommandVisitor
      Throws:
      InterruptedException
    • processProducerAck

      public org.apache.activemq.command.Response processProducerAck(org.apache.activemq.command.ProducerAck ack) throws Exception
      Specified by:
      processProducerAck in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • getConnector

      public Connector getConnector()
      Specified by:
      getConnector in interface Connection
      Returns:
      the connector that created this connection.
    • dispatchSync

      public void dispatchSync(org.apache.activemq.command.Command message)
      Description copied from interface: Connection
      Sends a message to the client.
      Specified by:
      dispatchSync in interface Connection
      Parameters:
      message - the message to send to the client.
    • dispatchAsync

      public void dispatchAsync(org.apache.activemq.command.Command message)
      Description copied from interface: Connection
      Sends a message to the client.
      Specified by:
      dispatchAsync in interface Connection
    • processDispatch

      protected void processDispatch(org.apache.activemq.command.Command command) throws IOException
      Throws:
      IOException
    • iterate

      public boolean iterate()
      Specified by:
      iterate in interface org.apache.activemq.thread.Task
    • getStatistics

      public ConnectionStatistics getStatistics()
      Returns the statistics for this connection
      Specified by:
      getStatistics in interface Connection
    • getMessageAuthorizationPolicy

      public MessageAuthorizationPolicy getMessageAuthorizationPolicy()
    • setMessageAuthorizationPolicy

      public void setMessageAuthorizationPolicy(MessageAuthorizationPolicy messageAuthorizationPolicy)
    • isManageable

      public boolean isManageable()
      Specified by:
      isManageable in interface Connection
      Returns:
      true if the Connection will process control commands
    • start

      public void start() throws Exception
      Specified by:
      start in interface org.apache.activemq.Service
      Throws:
      Exception
    • stop

      public void stop() throws Exception
      Specified by:
      stop in interface org.apache.activemq.Service
      Throws:
      Exception
    • delayedStop

      public void delayedStop(int waitTime, String reason, Throwable cause)
    • stopAsync

      public void stopAsync(Throwable cause)
    • stopAsync

      public void stopAsync()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • doStop

      protected void doStop() throws Exception
      Throws:
      Exception
    • isBlockedCandidate

      public boolean isBlockedCandidate()
      Returns:
      Returns the blockedCandidate.
    • setBlockedCandidate

      public void setBlockedCandidate(boolean blockedCandidate)
      Parameters:
      blockedCandidate - The blockedCandidate to set.
    • isMarkedCandidate

      public boolean isMarkedCandidate()
      Returns:
      Returns the markedCandidate.
    • setMarkedCandidate

      public void setMarkedCandidate(boolean markedCandidate)
      Parameters:
      markedCandidate - The markedCandidate to set.
    • setSlow

      public void setSlow(boolean slow)
      Parameters:
      slow - The slow to set.
    • isSlow

      public boolean isSlow()
      Specified by:
      isSlow in interface Connection
      Returns:
      true if the Connection is slow
    • isMarkedBlockedCandidate

      public boolean isMarkedBlockedCandidate()
      Returns:
      true if the Connection is potentially blocked
    • doMark

      public void doMark()
      Mark the Connection, so we can deem if it's collectable on the next sweep
    • isBlocked

      public boolean isBlocked()
      Specified by:
      isBlocked in interface Connection
      Returns:
      if after being marked, the Connection is still writing
    • isConnected

      public boolean isConnected()
      Specified by:
      isConnected in interface Connection
      Returns:
      true if the Connection is connected
    • setBlocked

      public void setBlocked(boolean blocked)
      Parameters:
      blocked - The blocked to set.
    • setConnected

      public void setConnected(boolean connected)
      Parameters:
      connected - The connected to set.
    • isActive

      public boolean isActive()
      Specified by:
      isActive in interface Connection
      Returns:
      true if the Connection is active
    • setActive

      public void setActive(boolean active)
      Parameters:
      active - The active to set.
    • isStarting

      public boolean isStarting()
      Returns:
      true if the Connection is starting
    • isNetworkConnection

      public boolean isNetworkConnection()
      Description copied from interface: Connection
      return true if a network connection
      Specified by:
      isNetworkConnection in interface Connection
      Returns:
      if this is a network connection
    • isFaultTolerantConnection

      public boolean isFaultTolerantConnection()
      Specified by:
      isFaultTolerantConnection in interface Connection
      Returns:
      true if a fault tolerant connection
    • isPendingStop

      public boolean isPendingStop()
      Returns:
      true if the Connection needs to stop
    • processBrokerInfo

      public org.apache.activemq.command.Response processBrokerInfo(org.apache.activemq.command.BrokerInfo info)
      Specified by:
      processBrokerInfo in interface org.apache.activemq.state.CommandVisitor
    • dispatch

      protected void dispatch(org.apache.activemq.command.Command command) throws IOException
      Throws:
      IOException
    • getRemoteAddress

      public String getRemoteAddress()
      Specified by:
      getRemoteAddress in interface Connection
      Returns:
      the source address for this connection
    • getTransport

      public org.apache.activemq.transport.Transport getTransport()
    • getConnectionId

      public String getConnectionId()
      Specified by:
      getConnectionId in interface Connection
    • updateClient

      public void updateClient(org.apache.activemq.command.ConnectionControl control)
      Specified by:
      updateClient in interface Connection
    • getProducerBrokerExchangeIfExists

      public ProducerBrokerExchange getProducerBrokerExchangeIfExists(org.apache.activemq.command.ProducerInfo producerInfo)
    • getProtocolVersion

      public int getProtocolVersion()
    • processControlCommand

      public org.apache.activemq.command.Response processControlCommand(org.apache.activemq.command.ControlCommand command) throws Exception
      Specified by:
      processControlCommand in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processMessageDispatch

      public org.apache.activemq.command.Response processMessageDispatch(org.apache.activemq.command.MessageDispatch dispatch) throws Exception
      Specified by:
      processMessageDispatch in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processConnectionControl

      public org.apache.activemq.command.Response processConnectionControl(org.apache.activemq.command.ConnectionControl control) throws Exception
      Specified by:
      processConnectionControl in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processConnectionError

      public org.apache.activemq.command.Response processConnectionError(org.apache.activemq.command.ConnectionError error) throws Exception
      Specified by:
      processConnectionError in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • processConsumerControl

      public org.apache.activemq.command.Response processConsumerControl(org.apache.activemq.command.ConsumerControl control) throws Exception
      Specified by:
      processConsumerControl in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • registerConnectionState

      protected TransportConnectionState registerConnectionState(org.apache.activemq.command.ConnectionId connectionId, TransportConnectionState state)
    • unregisterConnectionState

      protected TransportConnectionState unregisterConnectionState(org.apache.activemq.command.ConnectionId connectionId)
    • listConnectionStates

      protected List<TransportConnectionState> listConnectionStates()
    • lookupConnectionState

      protected TransportConnectionState lookupConnectionState(String connectionId)
    • lookupConnectionState

      protected TransportConnectionState lookupConnectionState(org.apache.activemq.command.ConsumerId id)
    • lookupConnectionState

      protected TransportConnectionState lookupConnectionState(org.apache.activemq.command.ProducerId id)
    • lookupConnectionState

      protected TransportConnectionState lookupConnectionState(org.apache.activemq.command.SessionId id)
    • lookupConnectionState

      public TransportConnectionState lookupConnectionState(org.apache.activemq.command.ConnectionId connectionId)
    • setDuplexNetworkConnectorId

      protected void setDuplexNetworkConnectorId(String duplexNetworkConnectorId)
    • getDuplexNetworkConnectorId

      protected String getDuplexNetworkConnectorId()
    • isStopping

      public boolean isStopping()
    • getStopped

      protected CountDownLatch getStopped()
    • getRemoteWireFormatInfo

      public org.apache.activemq.command.WireFormatInfo getRemoteWireFormatInfo()
    • processBrokerSubscriptionInfo

      public org.apache.activemq.command.Response processBrokerSubscriptionInfo(org.apache.activemq.command.BrokerSubscriptionInfo info) throws Exception
      Specified by:
      processBrokerSubscriptionInfo in interface org.apache.activemq.state.CommandVisitor
      Throws:
      Exception
    • getConnectedTimestamp

      public Long getConnectedTimestamp()
      Description copied from interface: Connection
      Returns the time in ms since epoch when connection was established.
      Specified by:
      getConnectedTimestamp in interface Connection
      Returns:
      time in ms since epoch when connection was established.