Package com.iizix.server
Class AbstractEndPoint
java.lang.Object
com.iizix.server.AbstractEndPoint
- All Implemented Interfaces:
IServerWebSocketCommListener
,ITransactionCreator
,ITransactionSender
,WebSocketCommListener
,IEndPoint
,IRootPropTransactionSender
- Direct Known Subclasses:
LoadBalancerEndPoint
,RemoteBuilderEndPoint
,ServerSession
,VirtualizedMonitorEndPoint
public abstract class AbstractEndPoint extends 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
Modifier and TypeFieldDescriptionprotected boolean
Debug mode, very verbose output.protected final PropMgr
The property endPointPropertyManager.protected final IEndPoint.Type
The end-point type.protected final String
The name of this end point.protected RootPropTransactionSender
Root property transaction sender.protected PropCnr
The root container property of the end point.protected final ServerShell
The main server instance.protected final long
The server session ID.protected final SessionInfo
The SessionInfo.protected final VirtualThreadGroup
The thread group for the end point.protected final Worker
The 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
ConstructorDescriptionAbstractEndPoint
(IEndPoint.Type endPointType, String name, long sessionID, IWebSocketComm comm, ServerShell server, HashMap<String, String> classNameMap, ClassLoader contextClassLoader) Creates a new EndPoint instance.Method Summary
Modifier and TypeMethodDescriptionfinal SendTransaction
Creates a Transaction using a Write Cache.boolean
dispose()
Disposes of the end point.getClientContextMenuReference
(UIContextMenu contextMenu) Gets the reference to use for a context menu.final IEndPoint
Gets the end-point.Gets the end point name.final IEndPoint.Type
Gets the end point type.protected long
Gets the heart-beat interval time in milliseconds, called during start-up in the constructor.final PropCnr
Gets the end point properties, i.e.final PropMgr
Gets the property manager of the end point.final ServerShell
Gets the server.final long
Gets the Server Session ID.final SessionInfo
Gets the SessionInfo for this end point.Gets the WebSocketCommListener for the end point.final boolean
Checks if the communication link is connected.protected void
onClientPropsCreated
(PropCnr root) Called when the root is created from a transaction from the client.void
onCommClosed
(IWebSocketComm comm, int code, String reason) Called when the communication link is closed.void
onCommClosing
(IWebSocketComm comm) Called when the communication link is closing.void
Called when the communication link is connected.void
onCommData
(IWebSocketComm comm, byte[] _data, int offset, int len) Called when the communication link has received binary data.void
onCommData
(IWebSocketComm comm, String data) Called when the communication link has received String data.void
onCommError
(IWebSocketComm comm, Throwable e) Called when the communication link is closed.void
onCommHeartBeat
(IWebSocketComm comm, long duration) Called when a heart-beat frame is received.void
onCommOpen
(IWebSocketComm comm) Called when the communication link is opened.void
onCommTimeout
(IWebSocketComm comm, boolean isReadTimeout) Called when the communication link has timed out on a read or write operation.protected void
Called to perform sending of a heart-beat.protected void
Called upon connect to enable initialization of e.g.protected String
Formats the value as a string to add toparamString
.protected abstract boolean
processQueuedTransaction
(int code, ReadTransaction trans) This method must be implemented in all extending classes.final void
sendTransaction
(SendTransaction trans) Sends a transaction to the end point.toString()
Returns a string representation of this component and its values.
Field Details
DEBUG
protected boolean DEBUGDebug mode, very verbose output.serverSessionID
protected final long serverSessionIDThe server session ID.name
The name of this end point.worker
The worker of the Editor.server
The main server instance.sessionInfo
The SessionInfo.threadGroup
The thread group for the end point.endPointType
The end-point type.endPointPropertyManager
The property endPointPropertyManager.root
The root container property of the end point.propTransSender
Root property transaction sender.
Constructor Details
AbstractEndPoint
public AbstractEndPoint(IEndPoint.Type endPointType, String name, long sessionID, IWebSocketComm comm, ServerShell server, HashMap<String, String> classNameMap, ClassLoader contextClassLoader) throws IOExceptionCreates 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.classNameMap
- The class name map.contextClassLoader
- The context class loader.- Throws:
IOException
- For I/O errors.
Method Details
getEndPoint
Gets the end-point.- Specified by:
getEndPoint
in interfaceIServerWebSocketCommListener
- Returns:
- An instance of com.iizix.server.IEndPoint.
getServerSessionID
public final long getServerSessionID()Gets the Server Session ID.- Specified by:
getServerSessionID
in interfaceIEndPoint
- Returns:
- The session ID.
getServer
Gets the server.getWebSocketCommListener
Gets the WebSocketCommListener for the end point.- Specified by:
getWebSocketCommListener
in interfaceIEndPoint
- Parameters:
comm
- The WebSocket communication instance.- Returns:
- The WebSocket listener.
getEndPointType
Gets the end point type.- Specified by:
getEndPointType
in interfaceIEndPoint
- Returns:
- The endpoint type.
getEndPointName
Gets the end point name.- Specified by:
getEndPointName
in 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
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
Gets the end point properties, i.e. the root container.- Returns:
- The root container.
getSessionInfo
Gets the SessionInfo for this end point.- Specified by:
getSessionInfo
in interfaceIEndPoint
- Returns:
- The SessionInfo instance.
dispose
public boolean dispose()Disposes of the end point.onCommOpen
Called when the communication link is opened.- Specified by:
onCommOpen
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.
onCommConnected
Called when the communication link is connected. The endpoint starts by sending a CREATE transaction of the endpoint root property container.- Specified by:
onCommConnected
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.
onCommData
Called when the communication link has received binary data.- Specified by:
onCommData
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance._data
- The data byte array.offset
- Offset in buffer.len
- Length of data.
onCommData
Called when the communication link has received String data.- Specified by:
onCommData
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.data
- The String data.
onCommHeartBeat
Called when a heart-beat frame is received.- Specified by:
onCommHeartBeat
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.duration
- Duration of the PING-PONG message exchange in nanoseconds.
onCommTimeout
Called when the communication link has timed out on a read or write operation.- Specified by:
onCommTimeout
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.isReadTimeout
- Flag indicating read timeout when true, false indicates write timeout.
onCommError
Called when the communication link is closed.- Specified by:
onCommError
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.e
- The exception.
onCommClosing
Called when the communication link is closing.- Specified by:
onCommClosing
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.
onCommClosed
Called when the communication link is closed.- Specified by:
onCommClosed
in interfaceWebSocketCommListener
- Parameters:
comm
- The WebSocket communication instance.code
- The reason code for closure.reason
- The reason string explanation for closure.
onClientPropsCreated
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
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:
isConnected
in interfaceIRootPropTransactionSender
- Returns:
- true if the connection has been established, false if closed or if in progress of closing.
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:
createTransaction
in interfaceITransactionCreator
- Returns:
- The transaction with the WriteCache with parameters specified in the properties.
sendTransaction
Sends a transaction to the end point.- Specified by:
sendTransaction
in interfaceIRootPropTransactionSender
- Specified by:
sendTransaction
in interfaceITransactionSender
- Parameters:
trans
- The transaction to send.
paramString
Formats the value as a string to add toparamString
.- Returns:
- String format of the parameters.
toString
Returns a string representation of this component and its values.getClientContextMenuReference
Gets the reference to use for a context menu. Override to process.- Specified by:
getClientContextMenuReference
in interfaceIRootPropTransactionSender
- Parameters:
contextMenu
- The context menu.- Returns:
- The reference to use, empty string for none (never null).