org.apache.activemq.broker
Class TransportConnection

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

public class TransportConnection
extends Object
implements Connection, Task, CommandVisitor


Field Summary
protected  Broker broker
           
protected  Map<ConnectionId,ConnectionState> brokerConnectionStates
           
protected  BrokerInfo brokerInfo
           
protected  TransportConnector connector
           
protected  List<Command> dispatchQueue
           
protected  AtomicBoolean dispatchStopped
           
protected  TaskRunner taskRunner
           
protected  AtomicReference<IOException> transportException
           
 
Constructor Summary
TransportConnection(TransportConnector connector, Transport transport, Broker broker, TaskRunnerFactory taskRunnerFactory, TaskRunnerFactory stopTaskRunnerFactory)
           
 
Method Summary
 void delayedStop(int waitTime, String reason, Throwable cause)
           
protected  void dispatch(Command command)
           
 void dispatchAsync(Command message)
          Sends a message to the client.
 void dispatchSync(Command message)
          Sends a message to the client.
 void doMark()
          Mark the Connection, so we can deem if it's collectable on the next sweep
protected  void doStop()
           
 String getConnectionId()
           
 Connector getConnector()
           
 int getDispatchQueueSize()
          Returns the number of messages to be dispatched to this connection
protected  String getDuplexNetworkConnectorId()
           
 MessageAuthorizationPolicy getMessageAuthorizationPolicy()
           
 ProducerBrokerExchange getProducerBrokerExchangeIfExists(ProducerInfo producerInfo)
           
 int getProtocolVersion()
           
 String getRemoteAddress()
           
 ConnectionStatistics getStatistics()
          Returns the statistics for this connection
protected  CountDownLatch getStopped()
           
 Transport getTransport()
           
 boolean isActive()
           
 boolean isBlocked()
           
 boolean isBlockedCandidate()
           
 boolean isConnected()
           
 boolean isFaultTolerantConnection()
           
 boolean isManageable()
           
 boolean isMarkedBlockedCandidate()
           
 boolean isMarkedCandidate()
           
 boolean isNetworkConnection()
          return true if a network connection
 boolean isPendingStop()
           
 boolean isSlow()
           
 boolean isStarting()
           
 boolean isStopping()
           
 boolean iterate()
           
protected  List<TransportConnectionState> listConnectionStates()
           
 TransportConnectionState lookupConnectionState(ConnectionId connectionId)
           
protected  TransportConnectionState lookupConnectionState(ConsumerId id)
           
protected  TransportConnectionState lookupConnectionState(ProducerId id)
           
protected  TransportConnectionState lookupConnectionState(SessionId id)
           
protected  TransportConnectionState lookupConnectionState(String connectionId)
           
 Response processAddConnection(ConnectionInfo info)
           
 Response processAddConsumer(ConsumerInfo info)
           
 Response processAddDestination(DestinationInfo info)
           
 Response processAddProducer(ProducerInfo info)
           
 Response processAddSession(SessionInfo info)
           
 Response processBeginTransaction(TransactionInfo info)
           
 Response processBrokerInfo(BrokerInfo info)
           
 Response processCommitTransactionOnePhase(TransactionInfo info)
           
 Response processCommitTransactionTwoPhase(TransactionInfo info)
           
 Response processConnectionControl(ConnectionControl control)
           
 Response processConnectionError(ConnectionError error)
           
 Response processConsumerControl(ConsumerControl control)
           
 Response processControlCommand(ControlCommand command)
           
protected  void processDispatch(Command command)
           
 Response processEndTransaction(TransactionInfo info)
           
 Response processFlush(FlushCommand command)
           
 Response processForgetTransaction(TransactionInfo info)
           
 Response processKeepAlive(KeepAliveInfo info)
           
 Response processMessage(Message messageSend)
           
 Response processMessageAck(MessageAck ack)
           
 Response processMessageDispatch(MessageDispatch dispatch)
           
 Response processMessageDispatchNotification(MessageDispatchNotification notification)
           
 Response processMessagePull(MessagePull pull)
           
 Response processPrepareTransaction(TransactionInfo info)
           
 Response processProducerAck(ProducerAck ack)
           
 Response processRecoverTransactions(TransactionInfo info)
           
 Response processRemoveConnection(ConnectionId id, long lastDeliveredSequenceId)
           
 Response processRemoveConsumer(ConsumerId id, long lastDeliveredSequenceId)
           
 Response processRemoveDestination(DestinationInfo info)
           
 Response processRemoveProducer(ProducerId id)
           
 Response processRemoveSession(SessionId id, long lastDeliveredSequenceId)
           
 Response processRemoveSubscription(RemoveSubscriptionInfo info)
           
 Response processRollbackTransaction(TransactionInfo info)
           
 Response processShutdown(ShutdownInfo info)
           
 Response processWireFormat(WireFormatInfo info)
           
protected  TransportConnectionState registerConnectionState(ConnectionId connectionId, TransportConnectionState state)
           
 Response service(Command command)
          Services a client command and submits it to the broker.
 void serviceException(Throwable e)
          Closes a clients connection due to a detected error.
 void serviceExceptionAsync(IOException e)
          Calls the serviceException method in an async thread.
 void serviceTransportException(IOException e)
           
 void setActive(boolean active)
           
 void setBlocked(boolean blocked)
           
 void setBlockedCandidate(boolean blockedCandidate)
           
 void setConnected(boolean connected)
           
protected  void setDuplexNetworkConnectorId(String duplexNetworkConnectorId)
           
 void setMarkedCandidate(boolean markedCandidate)
           
 void setMessageAuthorizationPolicy(MessageAuthorizationPolicy messageAuthorizationPolicy)
           
protected  void setPendingStop(boolean pendingStop)
           
 void setSlow(boolean slow)
           
protected  void setStarting(boolean starting)
           
 void start()
           
 void stop()
           
 void stopAsync()
           
 String toString()
           
protected  TransportConnectionState unregisterConnectionState(ConnectionId connectionId)
           
 void updateClient(ConnectionControl control)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

broker

protected final Broker broker

connector

protected final TransportConnector connector

brokerConnectionStates

protected final Map<ConnectionId,ConnectionState> brokerConnectionStates

brokerInfo

protected BrokerInfo brokerInfo

dispatchQueue

protected final List<Command> dispatchQueue

taskRunner

protected TaskRunner taskRunner

transportException

protected final AtomicReference<IOException> transportException

dispatchStopped

protected AtomicBoolean dispatchStopped
Constructor Detail

TransportConnection

public TransportConnection(TransportConnector connector,
                           Transport transport,
                           Broker broker,
                           TaskRunnerFactory taskRunnerFactory,
                           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 Response service(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 Response processKeepAlive(KeepAliveInfo info)
                          throws Exception
Specified by:
processKeepAlive in interface CommandVisitor
Throws:
Exception

processRemoveSubscription

public Response processRemoveSubscription(RemoveSubscriptionInfo info)
                                   throws Exception
Specified by:
processRemoveSubscription in interface CommandVisitor
Throws:
Exception

processWireFormat

public Response processWireFormat(WireFormatInfo info)
                           throws Exception
Specified by:
processWireFormat in interface CommandVisitor
Throws:
Exception

processShutdown

public Response processShutdown(ShutdownInfo info)
                         throws Exception
Specified by:
processShutdown in interface CommandVisitor
Throws:
Exception

processFlush

public Response processFlush(FlushCommand command)
                      throws Exception
Specified by:
processFlush in interface CommandVisitor
Throws:
Exception

processBeginTransaction

public Response processBeginTransaction(TransactionInfo info)
                                 throws Exception
Specified by:
processBeginTransaction in interface CommandVisitor
Throws:
Exception

processEndTransaction

public Response processEndTransaction(TransactionInfo info)
                               throws Exception
Specified by:
processEndTransaction in interface CommandVisitor
Throws:
Exception

processPrepareTransaction

public Response processPrepareTransaction(TransactionInfo info)
                                   throws Exception
Specified by:
processPrepareTransaction in interface CommandVisitor
Throws:
Exception

processCommitTransactionOnePhase

public Response processCommitTransactionOnePhase(TransactionInfo info)
                                          throws Exception
Specified by:
processCommitTransactionOnePhase in interface CommandVisitor
Throws:
Exception

processCommitTransactionTwoPhase

public Response processCommitTransactionTwoPhase(TransactionInfo info)
                                          throws Exception
Specified by:
processCommitTransactionTwoPhase in interface CommandVisitor
Throws:
Exception

processRollbackTransaction

public Response processRollbackTransaction(TransactionInfo info)
                                    throws Exception
Specified by:
processRollbackTransaction in interface CommandVisitor
Throws:
Exception

processForgetTransaction

public Response processForgetTransaction(TransactionInfo info)
                                  throws Exception
Specified by:
processForgetTransaction in interface CommandVisitor
Throws:
Exception

processRecoverTransactions

public Response processRecoverTransactions(TransactionInfo info)
                                    throws Exception
Specified by:
processRecoverTransactions in interface CommandVisitor
Throws:
Exception

processMessage

public Response processMessage(Message messageSend)
                        throws Exception
Specified by:
processMessage in interface CommandVisitor
Throws:
Exception

processMessageAck

public Response processMessageAck(MessageAck ack)
                           throws Exception
Specified by:
processMessageAck in interface CommandVisitor
Throws:
Exception

processMessagePull

public Response processMessagePull(MessagePull pull)
                            throws Exception
Specified by:
processMessagePull in interface CommandVisitor
Throws:
Exception

processMessageDispatchNotification

public Response processMessageDispatchNotification(MessageDispatchNotification notification)
                                            throws Exception
Specified by:
processMessageDispatchNotification in interface CommandVisitor
Throws:
Exception

processAddDestination

public Response processAddDestination(DestinationInfo info)
                               throws Exception
Specified by:
processAddDestination in interface CommandVisitor
Throws:
Exception

processRemoveDestination

public Response processRemoveDestination(DestinationInfo info)
                                  throws Exception
Specified by:
processRemoveDestination in interface CommandVisitor
Throws:
Exception

processAddProducer

public Response processAddProducer(ProducerInfo info)
                            throws Exception
Specified by:
processAddProducer in interface CommandVisitor
Throws:
Exception

processRemoveProducer

public Response processRemoveProducer(ProducerId id)
                               throws Exception
Specified by:
processRemoveProducer in interface CommandVisitor
Throws:
Exception

processAddConsumer

public Response processAddConsumer(ConsumerInfo info)
                            throws Exception
Specified by:
processAddConsumer in interface CommandVisitor
Throws:
Exception

processRemoveConsumer

public Response processRemoveConsumer(ConsumerId id,
                                      long lastDeliveredSequenceId)
                               throws Exception
Specified by:
processRemoveConsumer in interface CommandVisitor
Throws:
Exception

processAddSession

public Response processAddSession(SessionInfo info)
                           throws Exception
Specified by:
processAddSession in interface CommandVisitor
Throws:
Exception

processRemoveSession

public Response processRemoveSession(SessionId id,
                                     long lastDeliveredSequenceId)
                              throws Exception
Specified by:
processRemoveSession in interface CommandVisitor
Throws:
Exception

processAddConnection

public Response processAddConnection(ConnectionInfo info)
                              throws Exception
Specified by:
processAddConnection in interface CommandVisitor
Throws:
Exception

processRemoveConnection

public Response processRemoveConnection(ConnectionId id,
                                        long lastDeliveredSequenceId)
                                 throws InterruptedException
Specified by:
processRemoveConnection in interface CommandVisitor
Throws:
InterruptedException

processProducerAck

public Response processProducerAck(ProducerAck ack)
                            throws Exception
Specified by:
processProducerAck in interface CommandVisitor
Throws:
Exception

getConnector

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

dispatchSync

public void dispatchSync(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(Command message)
Description copied from interface: Connection
Sends a message to the client.

Specified by:
dispatchAsync in interface Connection

processDispatch

protected void processDispatch(Command command)
                        throws IOException
Throws:
IOException

iterate

public boolean iterate()
Specified by:
iterate in interface 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 Service
Throws:
Exception

stop

public void stop()
          throws Exception
Specified by:
stop in interface Service
Throws:
Exception

delayedStop

public void delayedStop(int waitTime,
                        String reason,
                        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:

isFaultTolerantConnection

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

setStarting

protected void setStarting(boolean starting)

isPendingStop

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

setPendingStop

protected void setPendingStop(boolean pendingStop)

processBrokerInfo

public Response processBrokerInfo(BrokerInfo info)
Specified by:
processBrokerInfo in interface CommandVisitor

dispatch

protected void dispatch(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 Transport getTransport()

getConnectionId

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

updateClient

public void updateClient(ConnectionControl control)
Specified by:
updateClient in interface Connection

getProducerBrokerExchangeIfExists

public ProducerBrokerExchange getProducerBrokerExchangeIfExists(ProducerInfo producerInfo)

getProtocolVersion

public int getProtocolVersion()

processControlCommand

public Response processControlCommand(ControlCommand command)
                               throws Exception
Specified by:
processControlCommand in interface CommandVisitor
Throws:
Exception

processMessageDispatch

public Response processMessageDispatch(MessageDispatch dispatch)
                                throws Exception
Specified by:
processMessageDispatch in interface CommandVisitor
Throws:
Exception

processConnectionControl

public Response processConnectionControl(ConnectionControl control)
                                  throws Exception
Specified by:
processConnectionControl in interface CommandVisitor
Throws:
Exception

processConnectionError

public Response processConnectionError(ConnectionError error)
                                throws Exception
Specified by:
processConnectionError in interface CommandVisitor
Throws:
Exception

processConsumerControl

public Response processConsumerControl(ConsumerControl control)
                                throws Exception
Specified by:
processConsumerControl in interface CommandVisitor
Throws:
Exception

registerConnectionState

protected TransportConnectionState registerConnectionState(ConnectionId connectionId,
                                                           TransportConnectionState state)

unregisterConnectionState

protected TransportConnectionState unregisterConnectionState(ConnectionId connectionId)

listConnectionStates

protected List<TransportConnectionState> listConnectionStates()

lookupConnectionState

protected TransportConnectionState lookupConnectionState(String connectionId)

lookupConnectionState

protected TransportConnectionState lookupConnectionState(ConsumerId id)

lookupConnectionState

protected TransportConnectionState lookupConnectionState(ProducerId id)

lookupConnectionState

protected TransportConnectionState lookupConnectionState(SessionId id)

lookupConnectionState

public TransportConnectionState lookupConnectionState(ConnectionId connectionId)

setDuplexNetworkConnectorId

protected void setDuplexNetworkConnectorId(String duplexNetworkConnectorId)

getDuplexNetworkConnectorId

protected String getDuplexNetworkConnectorId()

isStopping

public boolean isStopping()

getStopped

protected CountDownLatch getStopped()


Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.