Class 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 Detail

      • broker

        protected final Broker broker
      • 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
    • Constructor Detail

      • 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 Detail

      • 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
      • 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
      • 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()
      • 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
      • getTransport

        public org.apache.activemq.transport.Transport getTransport()
      • 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
      • unregisterConnectionState

        protected TransportConnectionState unregisterConnectionState​(org.apache.activemq.command.ConnectionId 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()
      • 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