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 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_USERINFOFields 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_UPDATEFields 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_TRANSConstructor Summary
ConstructorsConstructorDescriptionSessionTransMgr(ITransactionProcessor processor) Creates a new session for a new transaction processor.Method Summary
Modifier and TypeMethodDescriptionvoidAssigns the created transaction communications instance.voidcloseClient(String msg) Sends a close management transaction with an message in HTML format for the close reason.voidSends a close management transaction indicating the User Name or Password were incorrect.static SessionTransMgrcreateReconnectionInstance(SocketAddress address, String reconnectID, int nextSerialReconnect) Creates a reconnection session instance for an existing transaction processor and attempts reconnection.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.Gets the current state.Gets the transaction processor for unpackaged transactions.Gets the session.Gets the session identifier.Gets the statistics instance of the session.Gets the statistics as a snapshot.booleanChecks if current session is connected.booleanChecks if current session is connected.booleanisPaused()Checks if current session is connected.static booleanisReconnectionInstance(String reconnectID, String from) Checks if it's a valid reconnection session instance for an existing transaction processor and attempts reconnection.voidonCommClosed(TransactionComm comm, int code, String reason) Called when the communication link is closed.voidonCommClosing(TransactionComm comm) Called when the communication link is closing.voidCalled when the communication link is connected.voidonCommData(TransactionComm comm, ReadTransaction trans, int size) Called when the communication link has received data.voidonCommError(TransactionComm comm, 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.voidRequests 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, waitMethods inherited from interface com.iizix.comm.session.ISessionStatistics
getLastConnectionTime, getProperties, getProperty, setProperty
Constructor Details
SessionTransMgr
Creates a new session for a new transaction processor.- Parameters:
processor- The transaction processor.
Method Details
isReconnectionInstance
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(SocketAddress address, 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
Assigns the created transaction communications instance.getProcessor
Gets the transaction processor for unpackaged transactions.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
Gets the statistics as a snapshot.getSession
Gets the session.- Returns:
- The session.
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
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
Creates a transaction for processing normal transactions.- Specified by:
createTransactionin interfaceITransactionCreator- Returns:
- The new
Transactioninstance.
onCommConnected
Called when the communication link is connected.- Specified by:
onCommConnectedin interfaceTransactionCommListener- Parameters:
comm- The transaction communication instance.
onCommData
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
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
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
Called when the communication link is closed.- Specified by:
onCommErrorin interfaceTransactionCommListener- Parameters:
comm- The transaction communication instance.e- The exception.
onCommClosing
Called when the communication link is closing.- Specified by:
onCommClosingin interfaceTransactionCommListener- Parameters:
comm- The transaction communication instance.
onCommClosed
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
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
Sends a close management transaction indicating the User Name or Password were incorrect.- Parameters:
info- The information string.
closeClient
Sends a close management transaction with an message in HTML format for the close reason.- Parameters:
msg- The close reason in HTML format.