Package com.iizix.comm.session
Class SessionTransMgr
- java.lang.Object
- com.iizix.comm.session.SessionTransMgr
- All Implemented Interfaces:
GCloseCodes
,GManagementConstants
,ITransactionCreator
,ISessionStatistics
,ISessionTransMgr
,TransactionCommListener
,GConstants
public class SessionTransMgr extends java.lang.Object implements ISessionTransMgr, TransactionCommListener, ITransactionCreator, GConstants, GManagementConstants, GCloseCodes
The Session Transaction Manager is used for keeping track of transaction that have been received or sent to a client on session basis so that a remote session may re-establish a broken communication link.- Author:
- Christopher Mindus
Field Summary
Fields inherited from interface com.iizix.comm.GCloseCodes
CC_APPMSG, CC_DISPOSED, CC_HISTORY_ERROR, CC_OCCUPIED, CC_PAUSE, CC_USERINFO
Fields inherited from interface com.iizix.GConstants
TRANS_ATOM, TRANS_BINARY_DATA, TRANS_BUSY, TRANS_CLIENT_LOCK, TRANS_CREATE, TRANS_DISPLAYTERMINAL, TRANS_DOWNLOAD_RESOURCES, TRANS_HOSTPRINT, TRANS_INIT, TRANS_INSTALL_RESOURCE, TRANS_LOG, TRANS_MANAGEMENT, TRANS_MESSAGE, TRANS_RELOAD, TRANS_REMOTE_CALL, TRANS_REMOTE_EVENT, TRANS_REMOTE_REPLY, TRANS_REMOVETERMINAL, TRANS_TERMINALUPDATE, TRANS_UPDATE
Fields inherited from interface com.iizix.comm.GManagementConstants
MT_CONNECTION, MT_DISPOSE_WHEN_CLOSED, MT_NEXT_SERIAL, MT_PING, MT_PONG, MT_PW, MT_RECONNECTION, MT_RESEND_TRANS
Constructor Summary
Constructors Constructor Description SessionTransMgr(ITransactionProcessor processor)
Creates a new session for a new transaction processor.
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
assignTransactionComm(TransactionComm comm)
Assigns the created transaction communications instance.void
closeClient(java.lang.String msg)
Sends a close management transaction with an message in HTML format for the close reason.void
closeClientAuthenticationInfo(java.lang.String info)
Sends a close management transaction indicating the User Name or Password were incorrect.static SessionTransMgr
createReconnectionInstance(java.net.SocketAddress address, java.lang.String reconnectID, int nextSerialReconnect)
Creates a reconnection session instance for an existing transaction processor and attempts reconnection.SendTransaction
createTransaction()
Creates a transaction for processing normal transactions.void
dispose(boolean doAbort)
Dispose of this session by delegating it to the Session ID.void
doDispose(boolean doAbort)
Called when the session ID has been disposed of by a call to its dispose method.void
doPause()
Requests a pause of the session from the server.SessionConnectionStatistics.State
getCurrentState()
Gets the current state.ITransactionProcessor
getProcessor()
Gets the transaction processor for unpackaged transactions.SessionID
getSession()
Gets the session.java.lang.String
getSessionID()
Gets the session identifier.SessionStatistics
getSessionStatistics()
Gets the statistics instance of the session.SessionStatistics
getStatisticsSnapshot()
Gets the statistics as a snapshot.boolean
isConnected()
Checks if current session is connected.boolean
isDisconnected()
Checks if current session is connected.boolean
isPaused()
Checks if current session is connected.static boolean
isReconnectionInstance(java.lang.String reconnectID, java.lang.String from)
Checks if it's a valid reconnection session instance for an existing transaction processor and attempts reconnection.void
onCommClosed(TransactionComm comm, int code, java.lang.String reason)
Called when the communication link is closed.void
onCommClosing(TransactionComm comm)
Called when the communication link is closing.void
onCommConnected(TransactionComm comm)
Called when the communication link is connected.void
onCommData(TransactionComm comm, ReadTransaction trans, int size)
Called when the communication link has received data.void
onCommError(TransactionComm comm, java.lang.Throwable e)
Called when the communication link is closed.void
onCommHeartBeat(TransactionComm comm, long duration)
Called when a heart-beat frame is received.void
onCommTimeout(TransactionComm comm, boolean isReadTimeout)
Called when the communication link has timed out on a read or write operation.void
requestPingPong()
Requests a ping-pong transaction.boolean
sendTransaction(SendTransaction trans)
Send a transaction to the client, assigning the transaction serial and processing statistics.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.iizix.comm.session.ISessionStatistics
getLastConnectionTime, getProperties, getProperty, setProperty
Constructor Detail
SessionTransMgr
public SessionTransMgr(ITransactionProcessor processor)
Creates a new session for a new transaction processor.- Parameters:
processor
- The transaction processor.
Method Detail
isReconnectionInstance
public static boolean isReconnectionInstance(java.lang.String reconnectID, java.lang.String from)
Checks if it's a valid reconnection session instance for an existing transaction processor and attempts reconnection.- Returns:
- The instance of the Session Manager, null if the reconnection instance is not available.
createReconnectionInstance
public static SessionTransMgr createReconnectionInstance(java.net.SocketAddress address, java.lang.String reconnectID, int nextSerialReconnect)
Creates a reconnection session instance for an existing transaction processor and attempts reconnection.- Returns:
- The instance of the Session Manager, null if the reconnection instance is not available.
assignTransactionComm
public void assignTransactionComm(TransactionComm comm)
Assigns the created transaction communications instance.
getProcessor
public ITransactionProcessor getProcessor()
Gets the transaction processor for unpackaged transactions.
getSessionStatistics
public SessionStatistics getSessionStatistics()
Gets the statistics instance of the session.- Specified by:
getSessionStatistics
in interfaceISessionStatistics
- Returns:
- The SessionStatistics instance.
dispose
public void dispose(boolean doAbort)
Dispose of this session by delegating it to the Session ID.- Parameters:
doAbort
- Abort-flag, if true pending transaction are not sent.
getStatisticsSnapshot
public SessionStatistics getStatisticsSnapshot()
Gets the statistics as a snapshot.
getSession
public SessionID getSession()
Gets the session.- Returns:
- The session.
getSessionID
public java.lang.String getSessionID()
Gets the session identifier.- Returns:
- The session identifier, or null if disposed of.
doDispose
public void doDispose(boolean doAbort)
Called when the session ID has been disposed of by a call to its dispose method.- Specified by:
doDispose
in interfaceISessionTransMgr
- Parameters:
doAbort
- Abort-flag, if true pending transaction are not sent.
getCurrentState
public SessionConnectionStatistics.State getCurrentState()
Gets the current state.
isConnected
public boolean isConnected()
Checks if current session is connected. Be careful, do not forget that a connection can becomeisConnected()==false
when paused!
isDisconnected
public boolean isDisconnected()
Checks if current session is connected. Be careful, do not forget that a connection can becomeisConnected()==false
when paused!
isPaused
public boolean isPaused()
Checks if current session is connected. Be careful, do not forget that a connection can becomeisConnected()==false
when paused!
doPause
public void doPause()
Requests a pause of the session from the server.
createTransaction
public SendTransaction createTransaction()
Creates a transaction for processing normal transactions.- Specified by:
createTransaction
in interfaceITransactionCreator
- Returns:
- The new
Transaction
instance.
onCommConnected
public void onCommConnected(TransactionComm comm)
Called when the communication link is connected.- Specified by:
onCommConnected
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.
onCommData
public void onCommData(TransactionComm comm, ReadTransaction trans, int size)
Called when the communication link has received data.- Specified by:
onCommData
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.trans
- The transaction received.size
- The size of the data received, as it may have been uncompressed.
onCommHeartBeat
public void onCommHeartBeat(TransactionComm comm, long duration)
Called when a heart-beat frame is received.- Specified by:
onCommHeartBeat
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.duration
- Duration of the PING-PONG message exchange in milliseconds.
onCommTimeout
public void onCommTimeout(TransactionComm comm, boolean isReadTimeout)
Called when the communication link has timed out on a read or write operation.- Specified by:
onCommTimeout
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.isReadTimeout
- Flag indicating read timeout when true, false indicates write timeout.
onCommError
public void onCommError(TransactionComm comm, java.lang.Throwable e)
Called when the communication link is closed.- Specified by:
onCommError
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.e
- The exception.
onCommClosing
public void onCommClosing(TransactionComm comm)
Called when the communication link is closing.- Specified by:
onCommClosing
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.
onCommClosed
public void onCommClosed(TransactionComm comm, int code, java.lang.String reason)
Called when the communication link is closed.- Specified by:
onCommClosed
in interfaceTransactionCommListener
- Parameters:
comm
- The transaction communication instance.
requestPingPong
public void requestPingPong()
Requests a ping-pong transaction.
sendTransaction
public boolean sendTransaction(SendTransaction trans)
Send a transaction to the client, assigning the transaction serial and processing statistics.- Parameters:
trans
- The transaction to send.- Returns:
- true for success, false for failure.
closeClientAuthenticationInfo
public void closeClientAuthenticationInfo(java.lang.String info)
Sends a close management transaction indicating the User Name or Password were incorrect.- Parameters:
info
- The information string.
closeClient
public void closeClient(java.lang.String msg)
Sends a close management transaction with an message in HTML format for the close reason.- Parameters:
msg
- The close reason in HTML format.