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, toString
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
getRemoteAddress, getState
private 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.Link
getDataLinkLayer
in interface DataLinkLayer.Link
public String getProperty(String name)
getProperty
in interface DataLinkLayer.Link
getProperty
in interface PropertyQueryInterface
name
- 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.Link
properties
- Neue Parameterwerte.public void connect()
connect
in interface DataLinkLayer.Link
public void shutdown()
shutdown
in interface DataLinkLayer.Link
public void abort()
abort
in interface DataLinkLayer.Link
public void reload()
public void send(byte[] bytes, int priority) throws InterruptedException
send
in interface DataLinkLayer.Link
bytes
- 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.