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 voidassignTransactionComm(TransactionComm comm)Assigns the created transaction communications instance.voidcloseClient(java.lang.String msg)Sends a close management transaction with an message in HTML format for the close reason.voidcloseClientAuthenticationInfo(java.lang.String info)Sends a close management transaction indicating the User Name or Password were incorrect.static SessionTransMgrcreateReconnectionInstance(java.net.SocketAddress address, java.lang.String reconnectID, int nextSerialReconnect)Creates a reconnection session instance for an existing transaction processor and attempts reconnection.SendTransactioncreateTransaction()Creates a transaction for processing normal transactions.voiddispose(boolean doAbort)Dispose of this session by delegating it to the Session ID.voiddoDispose(boolean doAbort)Called when the session ID has been disposed of by a call to its dispose method.voiddoPause()Requests a pause of the session from the server.SessionConnectionStatistics.StategetCurrentState()Gets the current state.ITransactionProcessorgetProcessor()Gets the transaction processor for unpackaged transactions.SessionIDgetSession()Gets the session.java.lang.StringgetSessionID()Gets the session identifier.SessionStatisticsgetSessionStatistics()Gets the statistics instance of the session.SessionStatisticsgetStatisticsSnapshot()Gets the statistics as a snapshot.booleanisConnected()Checks if current session is connected.booleanisDisconnected()Checks if current session is connected.booleanisPaused()Checks if current session is connected.static booleanisReconnectionInstance(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.voidonCommClosed(TransactionComm comm, int code, java.lang.String reason)Called when the communication link is closed.voidonCommClosing(TransactionComm comm)Called when the communication link is closing.voidonCommConnected(TransactionComm comm)Called when the communication link is connected.voidonCommData(TransactionComm comm, ReadTransaction trans, int size)Called when the communication link has received data.voidonCommError(TransactionComm comm, java.lang.Throwable e)Called when the communication link is closed.voidonCommHeartBeat(TransactionComm comm, long duration)Called when a heart-beat frame is received.voidonCommTimeout(TransactionComm comm, boolean isReadTimeout)Called when the communication link has timed out on a read or write operation.voidrequestPingPong()Requests a ping-pong transaction.booleansendTransaction(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:
getSessionStatisticsin 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:
doDisposein 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()==falsewhen paused!
isDisconnected
public boolean isDisconnected()
Checks if current session is connected. Be careful, do not forget that a connection can becomeisConnected()==falsewhen paused!
isPaused
public boolean isPaused()
Checks if current session is connected. Be careful, do not forget that a connection can becomeisConnected()==falsewhen 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:
createTransactionin interfaceITransactionCreator- Returns:
- The new
Transactioninstance.
onCommConnected
public void onCommConnected(TransactionComm comm)
Called when the communication link is connected.- Specified by:
onCommConnectedin 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:
onCommDatain 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:
onCommHeartBeatin 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:
onCommTimeoutin 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:
onCommErrorin 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:
onCommClosingin 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:
onCommClosedin 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.