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.TypeField Summary
FieldsModifier and TypeFieldDescriptionprotected booleanDebug mode, very verbose output.protected final PropMgrThe property endPointPropertyManager.protected final IEndPoint.TypeThe end-point type.protected final StringThe name of this end point.protected RootPropTransactionSenderRoot property transaction sender.protected PropCnrThe root container property of the end point.protected final ServerShellThe main server instance.protected final longThe server session ID.protected final SessionInfoThe SessionInfo.protected final VirtualThreadGroupThe thread group for the end point.protected final WorkerThe worker of the Editor.Fields inherited from interface com.iizix.server.IEndPoint
DEFAULT_HEARTBEAT_INTERVAL, STORAGE_NAMEFields 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_DATAConstructor Summary
ConstructorsConstructorDescriptionAbstractEndPoint(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 SendTransactionCreates a Transaction using a Write Cache.booleandispose()Disposes of the end point.getClientContextMenuReference(UIContextMenu contextMenu) Gets the reference to use for a context menu.final IEndPointGets the end-point.Gets the end point name.final IEndPoint.TypeGets the end point type.protected longGets the heart-beat interval time in milliseconds, called during start-up in the constructor.final PropCnrGets the end point properties, i.e.final PropMgrGets the property manager of the end point.final ServerShellGets the server.final longGets the Server Session ID.final SessionInfoGets the SessionInfo for this end point.Gets the WebSocketCommListener for the end point.final booleanChecks 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, String reason) Called when the communication link is closed.voidonCommClosing(IWebSocketComm comm) Called when the communication link is closing.voidCalled 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, String data) Called when the communication link has received String data.voidonCommError(IWebSocketComm comm, 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 voidCalled to perform sending of a heart-beat.protected voidCalled upon connect to enable initialization of e.g.protected StringFormats the value as a string to add toparamString.protected abstract booleanprocessQueuedTransaction(int code, ReadTransaction trans) This method must be implemented in all extending classes.final voidsendTransaction(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:
 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
Gets the server.getWebSocketCommListener
Gets the WebSocketCommListener for the end point.- Specified by:
 getWebSocketCommListenerin interfaceIEndPoint- Parameters:
 comm- The WebSocket communication instance.- Returns:
 - The WebSocket listener.
 
getEndPointType
Gets the end point type.- Specified by:
 getEndPointTypein interfaceIEndPoint- Returns:
 - The endpoint type.
 
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
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:
 getSessionInfoin interfaceIEndPoint- Returns:
 - The SessionInfo instance.
 
dispose
public boolean dispose()Disposes of the end point.onCommOpen
Called when the communication link is opened.- Specified by:
 onCommOpenin 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:
 onCommConnectedin interfaceWebSocketCommListener- Parameters:
 comm- The WebSocket communication instance.
onCommData
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
Called when the communication link has received String data.- Specified by:
 onCommDatain interfaceWebSocketCommListener- Parameters:
 comm- The WebSocket communication instance.data- The String data.
onCommHeartBeat
Called when a heart-beat frame is received.- Specified by:
 onCommHeartBeatin 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:
 onCommTimeoutin 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:
 onCommErrorin interfaceWebSocketCommListener- Parameters:
 comm- The WebSocket communication instance.e- The exception.
onCommClosing
Called when the communication link is closing.- Specified by:
 onCommClosingin interfaceWebSocketCommListener- Parameters:
 comm- The WebSocket communication instance.
onCommClosed
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
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:
 isConnectedin 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:
 createTransactionin interfaceITransactionCreator- Returns:
 - The transaction with the WriteCache with parameters specified in the properties.
 
sendTransaction
Sends a transaction to the end point.- Specified by:
 sendTransactionin interfaceIRootPropTransactionSender- Specified by:
 sendTransactionin 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:
 getClientContextMenuReferencein interfaceIRootPropTransactionSender- Parameters:
 contextMenu- The context menu.- Returns:
 - The reference to use, empty string for none (never null).