private class Server.Link extends AbstractDataLinkLayer.Link implements DataLinkLayer.Link, PropertyQueryInterface
| Modifier and Type | Field and Description |
|---|---|
private int |
_keepAliveReceiveTimeoutCount
Anzahl Intervall, in denen aktuell in Folge kein Keep-Alive-Telegramm empfangen wurde.
|
private long |
_lastKeepAliveReceive
Zeitpunkt des letzten empfangenen Keep-Alive-Telegramms in Millisekunden
|
(package private) byte[] |
_packetOnTheAir
Aktuell asynchron zu sendendes Telegramm
|
private Properties |
_properties
Enthält die online änderbaren Parameter für diese Verbindung
|
private PropertyConsultant |
_propertyConsultant
Wrapper-Objekt zum bequemen Zugriff auf die online änderbaren Parameter dieser Verbindung
|
private ByteBuffer |
_readBuffer
Empfangspuffer für empfangene Telegramme
|
private ByteBuffer |
_sendBuffer
Sendepuffer für versendete Telegramme
|
private PriorityChannel |
_sendChannel
Priorisierte Queue mit den noch zu versendenden Telegrammen
|
private boolean |
_sendKeepAlive
Flag das signalisiert, dass ein Keep-Alive-Telegramm versendet werden soll
|
private ServerSocketChannel |
_serverSocketChannel
Enthält während des Verbindungsaufbau das Kommunikationsobjekt mit internem Serversocket, über den die Verbindung des Clients entgegengenommen wird; sonst
null. |
private SocketChannel |
_socketChannel
Enthält während einer bestehenden Verbindung das Kommunikationsobjekt mit internem Server, über den der Datenaustausch mit dem Client abgewickelt wird;
sonst
null. |
private Timer |
_timer
Timerobjekt mit dem zukünftige Aktionen geplant und ausgeführt werden
|
private int |
_wanComConnectRetryDelay
Wartezeit in Sekunden, die nach einem fehlerbedingten Verbindungsabbruch gewartet wird, bevor die Verbindung neu aufgebaut wird.
|
private boolean |
_wanComIgnoreIpRouting
WanCom-IP-Routing ignorieren
|
private byte[] |
_wanComIp8
Lokale IP-Adresse, die in versendeten Telegrammen eingetragen wird.
|
private int |
_wanComKeepAliveTimeoutCount
Anzahl Intervalle ohne Empfang eines Keep-Alive-Telegramms nach der eine bestehende Verbindung abgebrochen und neu aufgebaut wird.
|
private int |
_wanComKeepAliveTimeSeconds
Intervallzeit in Sekunden für den Versand und Empfang von Keep-Alive-Telegrammen
|
private int |
_wanComKeepAliveType
WanCom-Typfeld ind Keep-Alive-Telegrammen
|
private int |
_wanComTlsType
WanCom-Typ für versendete TLS-Telegramme
|
private int |
_wanComTlsTypeReceive
WanCom-Typ für empfangene TLS-Telegramme, -1 bedeutet, dass beliebige Typen akzeptiert werden
|
private int |
_wanComVersion
Versionsfeld der WanCom-Telegramme
|
_linkLock, _linkPropertyLock, _linkState, _remoteAddress| Modifier | Constructor and Description |
|---|---|
private |
Server.Link(int remoteAddress)
Erzeugt ein neues Verbindungsobjekt.
|
| Modifier and Type | Method and Description |
|---|---|
void |
abort()
Initiiert den sofortigen Abbruch der bestehenden Verbindung dieses Verbindungsobjekts
|
private void |
closeChannel()
Schließt den Kommunikationskanal zum Client und plant den erneuten Aufbau der Kommunikationsverbindung nach der durch den Parameter
"wancom.connectRetryDelay" vorgebbaren Wartezeit ein.
|
private void |
closeChannel(int reconnectDelay)
Schließt den Kommunikationskanal zum Client und plant den erneuten Aufbau der Kommunikationsverbindung nach einer vorgebbaren Wartezeit ein.
|
void |
connect()
Initiiert den Verbindungsaufbau mit dem Kommunikationspartner dieses Verbindungsobjekts
|
private void |
connectSocketChannel(Selector selector)
Asynchroner Verbindungsaufbau.
|
DataLinkLayer |
getDataLinkLayer()
Bestimmt das Kommunikationsprotokoll zu dem diese Verbindung gehört.
|
String |
getProperty(String name)
Liefert einen Parameterwert zurück.
|
void |
handleAction(Server.ActionType action,
Selector selector)
Führt eine Aktion für dieses Verbindungsobjekt aus.
|
private void |
handleAsyncSend(Selector selector)
Führt den asynchronen Versand von noch zu versendenden Telegrammen aus.
|
void |
handleSelection(SelectionKey selectionKey,
Selector selector)
Verarbeitet asynchrone Kommunikationsoperationen anhand der vom Selektor des Protokoll-Threads gelieferten Möglichkeiten
|
private void |
notifyWorker(Server.ActionType action)
Sendet eine Aktion für dieses Verbindungsobjekt zur Ausführung an den Protokoll-Thread.
|
void |
reload()
Initiiert den Abbruch und erneuten Verbindungsaufbau einer bestehenden Verbindung mit evtl.
|
private void |
scheduleActionTimer(Server.ActionType actionType,
int delaySeconds)
Plant eine Aktion mit Hilfe eines Timer-Objekts zur späteren Ausführung ein.
|
void |
send(byte[] bytes,
int priority)
Initiiert den Versand eines Telegramms.
|
void |
setProperties(Properties properties)
Setzt neue Parameterwerte.
|
void |
shutdown()
Initiiert das Schließen der bestehenden Verbindung dieses Verbindungsobjekts
|
getRemoteAddress, getState, notifyEvent, toStringclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitgetRemoteAddress, getStateprivate final PriorityChannel _sendChannel
private ServerSocketChannel _serverSocketChannel
null.private SocketChannel _socketChannel
null.private Properties _properties
private final PropertyConsultant _propertyConsultant
private int _wanComVersion
private int _wanComKeepAliveTimeSeconds
private int _wanComKeepAliveTimeoutCount
private int _wanComConnectRetryDelay
private final Timer _timer
private final ByteBuffer _readBuffer
private final ByteBuffer _sendBuffer
private int _wanComKeepAliveType
private boolean _wanComIgnoreIpRouting
private int _wanComTlsType
private int _wanComTlsTypeReceive
private long _lastKeepAliveReceive
private int _keepAliveReceiveTimeoutCount
private boolean _sendKeepAlive
private byte[] _wanComIp8
byte[] _packetOnTheAir
private Server.Link(int remoteAddress)
remoteAddress - OSI-2 Adresse des Kommunikationspartnersprivate void notifyWorker(Server.ActionType action)
action - Auszuführende Aktionpublic DataLinkLayer getDataLinkLayer()
DataLinkLayer.LinkgetDataLinkLayer in interface DataLinkLayer.Linkpublic String getProperty(String name)
getProperty in interface DataLinkLayer.LinkgetProperty in interface PropertyQueryInterfacename - Name des gewünschten Parameterwerts.DataLinkLayer.Link.setProperties(java.util.Properties),
DataLinkLayer.getProperty(java.lang.String)public void setProperties(Properties properties)
setProperties in interface DataLinkLayer.Linkproperties - Neue Parameterwerte.public void connect()
connect in interface DataLinkLayer.Linkpublic void shutdown()
shutdown in interface DataLinkLayer.Linkpublic void abort()
abort in interface DataLinkLayer.Linkpublic void reload()
public void send(byte[] bytes,
int priority)
throws InterruptedException
send in interface DataLinkLayer.Linkbytes - Bytearray mit den Bytes des zu sendenden Telegramms.priority - Priorität des zu sendenden Telegramms.InterruptedException - Wenn der aktuelle Thread unterbrochen wurde.public void handleAction(Server.ActionType action, Selector selector)
action - Auszuführende Aktionselector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.private void handleAsyncSend(Selector selector)
selector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.private void closeChannel()
private void closeChannel(int reconnectDelay)
reconnectDelay - Wartezeit nach der die Verbindung wieder aufgebaut werden soll.public void handleSelection(SelectionKey selectionKey, Selector selector)
selectionKey - Vom Selektor des Protokoll-Threads gelieferte Kommunikationsmöglichkeitenselector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.private void connectSocketChannel(Selector selector)
selector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.private void scheduleActionTimer(Server.ActionType actionType, int delaySeconds)
actionType - Auszuführende AktiondelaySeconds - Verzögerungszeit in Sekunden nach der die Aktion ausgeführt werden soll.