Package com.iizix.server
Class AbstractEndPoint
- java.lang.Object
- com.iizix.server.AbstractEndPoint
- All Implemented Interfaces:
IServerWebSocketCommListener,ITransactionCreator,WebSocketCommListener,IEndPoint,IRootPropTransactionSender
- Direct Known Subclasses:
LoadBalancerEndPoint,RemoteBuilderEndPoint,ServerSession,VirtualizedMonitorEndPoint
public abstract class AbstractEndPoint extends java.lang.Object implements IEndPoint, IServerWebSocketCommListener, IRootPropTransactionSender
An implementation of a common end point for an Editor, Server or Monitor.- Author:
- Christopher Mindus
Nested Class Summary
Nested classes/interfaces inherited from interface com.iizix.server.IEndPoint
IEndPoint.Type
Field Summary
Fields Modifier and Type Field Description protected booleanDEBUGDebug mode, very verbose output.protected PropMgrendPointPropertyManagerThe property endPointPropertyManager.protected IEndPoint.TypeendPointTypeThe end-point type.protected java.lang.StringnameThe name of this end point.protected RootPropTransactionSenderpropTransSenderRoot property transaction sender.protected PropCnrrootThe root container property of the end point.protected ServerShellserverThe main server instance.protected longserverSessionIDThe server session ID.protected SessionInfosessionInfoThe SessionInfo.protected java.lang.ThreadGroupthreadGroupThe thread group for the end point.protected WorkerworkerThe worker of the Editor.Fields inherited from interface com.iizix.server.IEndPoint
DEFAULT_HEARTBEAT_INTERVAL, STORAGE_NAME
Fields inherited from interface com.iizix.nio.WebSocketCommListener
CC_ABNORMAL_CLOSURE, CC_GOING_AWAY, CC_INTERNAL_ERROR, CC_INVALID_PAYLOAD_DATA, CC_MANDATORY_EXT, CC_MESSAGE_TOO_BIG, CC_NO_STATUS_RECEIVED, CC_NORMAL, CC_POLICY_VIOLATION, CC_PROTOCOL_ERROR, CC_SERVICE_RESTART, CC_TLS_HANDSHAKE, CC_TRY_AGAIN_LATER, CC_UNSUPPORTED_DATA
Constructor Summary
Constructors Constructor Description AbstractEndPoint(IEndPoint.Type endPointType, java.lang.String name, long sessionID, IWebSocketComm comm, ServerShell server, java.lang.ThreadGroup serverThreadGroup, java.util.HashMap<java.lang.String,java.lang.String> classNameMap, java.lang.ClassLoader contextClassLoader)Creates a new EndPoint instance.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description SendTransactioncreateTransaction()Creates a Transaction using a Write Cache.booleandispose()Disposes of the end point.java.lang.StringgetClientContextMenuReference(UIContextMenu contextMenu)Gets the reference to use for a context menu.IEndPointgetEndPoint()Gets the end-point.java.lang.StringgetEndPointName()Gets the end point name.IEndPoint.TypegetEndPointType()Gets the end point type.protected longgetHeartBeatInterval()Gets the heart-beat interval time in milliseconds, called during start-up in the constructor.PropCnrgetProperties()Gets the end point properties, i.e.PropMgrgetPropertyManager()Gets the property manager of the end point.ServerShellgetServer()Gets the server.longgetServerSessionID()Gets the Server Session ID.SessionInfogetSessionInfo()Gets the SessionInfo for this end point.IServerWebSocketCommListenergetWebSocketCommListener(IWebSocketComm comm)Gets the WebSocketCommListener for the end point.booleanisConnected()Checks if the communication link is connected.protected voidonClientPropsCreated(PropCnr root)Called when the root is created from a transaction from the client.voidonCommClosed(IWebSocketComm comm, int code, java.lang.String reason)Called when the communication link is closed.voidonCommClosing(IWebSocketComm comm)Called when the communication link is closing.voidonCommConnected(IWebSocketComm comm)Called when the communication link is connected.voidonCommData(IWebSocketComm comm, byte[] _data, int offset, int len)Called when the communication link has received binary data.voidonCommData(IWebSocketComm comm, java.lang.String data)Called when the communication link has received String data.voidonCommError(IWebSocketComm comm, java.lang.Throwable e)Called when the communication link is closed.voidonCommHeartBeat(IWebSocketComm comm, long duration)Called when a heart-beat frame is received.voidonCommOpen(IWebSocketComm comm)Called when the communication link is opened.voidonCommTimeout(IWebSocketComm comm, boolean isReadTimeout)Called when the communication link has timed out on a read or write operation.protected voidonSendHeartHeat()Called to perform sending of a heart-beat.protected voidonSessionConnected()Called upon connect to enable initialization of e.g.protected java.lang.StringparamString()Formats the value as a string to add toparamString.protected abstract booleanprocessQueuedTransaction(int code, ReadTransaction trans)This method must be implemented in all extending classes.voidsendTransaction(SendTransaction trans)Sends a transaction to the end point.java.lang.StringtoString()Returns a string representation of this component and its values.
Field Detail
DEBUG
protected boolean DEBUG
Debug mode, very verbose output.
serverSessionID
protected final long serverSessionID
The server session ID.
name
protected final java.lang.String name
The name of this end point.
worker
protected final Worker worker
The worker of the Editor.
server
protected final ServerShell server
The main server instance.
sessionInfo
protected final SessionInfo sessionInfo
The SessionInfo.
threadGroup
protected final java.lang.ThreadGroup threadGroup
The thread group for the end point.
endPointType
protected final IEndPoint.Type endPointType
The end-point type.
endPointPropertyManager
protected final PropMgr endPointPropertyManager
The property endPointPropertyManager.
root
protected PropCnr root
The root container property of the end point.
propTransSender
protected RootPropTransactionSender propTransSender
Root property transaction sender.
Constructor Detail
AbstractEndPoint
public AbstractEndPoint(IEndPoint.Type endPointType, java.lang.String name, long sessionID, IWebSocketComm comm, ServerShell server, java.lang.ThreadGroup serverThreadGroup, java.util.HashMap<java.lang.String,java.lang.String> classNameMap, java.lang.ClassLoader contextClassLoader) throws java.io.IOException
Creates a new EndPoint instance.- Parameters:
endPointType- End point type.name- Name of end point.sessionID- Session ID.comm- Communications interface to web sockets.server- The server instance.serverThreadGroup- The thread group.classNameMap- The class name map.contextClassLoader- The context class loader.- Throws:
java.io.IOException- For I/O errors.
Method Detail
getEndPoint
public final IEndPoint getEndPoint()
Gets the end-point.- Specified by:
getEndPointin interfaceIServerWebSocketCommListener- Returns:
- An instance of com.iizix.server.IEndPoint.
getServerSessionID
public final long getServerSessionID()
Gets the Server Session ID.- Specified by:
getServerSessionIDin interfaceIEndPoint- Returns:
- The session ID.
getServer
public final ServerShell getServer()
Gets the server.
getWebSocketCommListener
public IServerWebSocketCommListener getWebSocketCommListener(IWebSocketComm comm)
Gets the WebSocketCommListener for the end point.- Specified by:
getWebSocketCommListenerin interfaceIEndPoint- Parameters:
comm- The WebSocket communication instance.- Returns:
- The WebSocket listener.
getEndPointType
public final IEndPoint.Type getEndPointType()
Gets the end point type.- Specified by:
getEndPointTypein interfaceIEndPoint- Returns:
- The endpoint type.
getEndPointName
public java.lang.String getEndPointName()
Gets the end point name.- Specified by:
getEndPointNamein interfaceIEndPoint- Returns:
- A short descriptive end-point type name.
getHeartBeatInterval
protected long getHeartBeatInterval()
Gets the heart-beat interval time in milliseconds, called during start-up in the constructor.- Returns:
- Interval in milliseconds, zero for none (default is DEFAULT_HEARTBEAT_INTERVAL, i.e. 20 seconds).
onSendHeartHeat
protected void onSendHeartHeat()
Called to perform sending of a heart-beat. Override if required. This method is called at regular intervals as specified by thegetHeartBeatInterval()return value.
onSessionConnected
protected void onSessionConnected()
Called upon connect to enable initialization of e.g. the root property. This method is overridden by subclasses and the base EndPoint implementation does nothing.
getPropertyManager
public final PropMgr getPropertyManager()
Gets the property manager of the end point. The property manager for an end point is always of SERVER type.- Returns:
- The singleton PropMgr instance.
getProperties
public final PropCnr getProperties()
Gets the end point properties, i.e. the root container.- Returns:
- The root container.
getSessionInfo
public final SessionInfo getSessionInfo()
Gets the SessionInfo for this end point.- Specified by:
getSessionInfoin interfaceIEndPoint- Returns:
- The SessionInfo instance.
dispose
public boolean dispose()
Disposes of the end point.
onCommOpen
public void onCommOpen(IWebSocketComm comm)
Called when the communication link is opened.- Specified by:
onCommOpenin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.
onCommConnected
public void onCommConnected(IWebSocketComm comm)
Called when the communication link is connected. The endpoint starts by sending a CREATE transaction of the endpoint root property container.- Specified by:
onCommConnectedin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.
onCommData
public void onCommData(IWebSocketComm comm, byte[] _data, int offset, int len)
Called when the communication link has received binary data.- Specified by:
onCommDatain interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance._data- The data byte array.offset- Offset in buffer.len- Length of data.
onCommData
public void onCommData(IWebSocketComm comm, java.lang.String data)
Called when the communication link has received String data.- Specified by:
onCommDatain interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.data- The String data.
onCommHeartBeat
public void onCommHeartBeat(IWebSocketComm comm, long duration)
Called when a heart-beat frame is received.- Specified by:
onCommHeartBeatin interfaceWebSocketCommListener- Parameters:
duration- Duration of the PING-PONG message exchange in milliseconds.comm- The WebSocket communication instance.
onCommTimeout
public void onCommTimeout(IWebSocketComm comm, boolean isReadTimeout)
Called when the communication link has timed out on a read or write operation.- Specified by:
onCommTimeoutin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.isReadTimeout- Flag indicating read timeout when true, false indicates write timeout.
onCommError
public void onCommError(IWebSocketComm comm, java.lang.Throwable e)
Called when the communication link is closed.- Specified by:
onCommErrorin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.e- The exception.
onCommClosing
public void onCommClosing(IWebSocketComm comm)
Called when the communication link is closing.- Specified by:
onCommClosingin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.
onCommClosed
public void onCommClosed(IWebSocketComm comm, int code, java.lang.String reason)
Called when the communication link is closed.- Specified by:
onCommClosedin interfaceWebSocketCommListener- Parameters:
comm- The WebSocket communication instance.code- The reason code for closure.reason- The reason string explanation for closure.
onClientPropsCreated
protected void onClientPropsCreated(PropCnr root)
Called when the root is created from a transaction from the client. Override to perform some additional processing such as adding server environment, etc.
processQueuedTransaction
protected abstract boolean processQueuedTransaction(int code, ReadTransaction trans)This method must be implemented in all extending classes.- Parameters:
code- The transaction code.trans- The transaction.- Returns:
- true if the transaction has been processed, false otherwise.
isConnected
public final boolean isConnected()
Checks if the communication link is connected.- Specified by:
isConnectedin interfaceIRootPropTransactionSender- Returns:
- true if the connection has been established, false if closed or if in progress of closing.
createTransaction
public final SendTransaction createTransaction()
Creates a Transaction using a Write Cache. This transaction is then used to write data into it. Be careful only to do it from a single thread as the Write Cache is not thread-safe!- Specified by:
createTransactionin interfaceITransactionCreator- Returns:
- The transaction with the WriteCache with parameters specified in the properties.
sendTransaction
public final void sendTransaction(SendTransaction trans)
Sends a transaction to the end point.- Specified by:
sendTransactionin interfaceIRootPropTransactionSender- Parameters:
trans- The transaction to send.
paramString
protected java.lang.String paramString()
Formats the value as a string to add toparamString.- Returns:
- String format of the parameters.
toString
public java.lang.String toString()
Returns a string representation of this component and its values.- Overrides:
toStringin classjava.lang.Object- Returns:
- a string representation of this property.
getClientContextMenuReference
public java.lang.String getClientContextMenuReference(UIContextMenu contextMenu)
Gets the reference to use for a context menu. Override to process.- Specified by:
getClientContextMenuReferencein interfaceIRootPropTransactionSender- Parameters:
contextMenu- The context menu.- Returns:
- The reference to use, empty string for none (never null).