private class Client.Link
extends de.bsvrz.kex.tls.osi2osi3.osi2.api.AbstractDataLinkLayer.Link
implements de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Link, de.bsvrz.kex.tls.osi2osi3.properties.PropertyQueryInterface
| Modifier and Type | Field and Description |
|---|---|
private int |
_countReceiptDataTel
Anzahl der empfangenen Daten-Telegramme seit des letzten Quittungstelegramm-Versands
|
private int |
_countSendDataTel
Anzahl des gesendeten Daten-Telegramme seit des letzten Quittungstelegramm-Empfangs
|
private int |
_lastQuittSeqNumDataTel
Sequenznummer des letzten quittierten Daten-Telegramms
|
private int |
_lastReceiptSeqNumDataTel
Sequenznummer des letzten empfangenen Daten-Telegramms
|
private long |
_lastReceiptTimeAllTel
Zeitpunkt des letzten empfangenen Telegramms (Keep-Alive, Quittung oder Daten) in Millisekunden
|
private long |
_lastReceiptTimeDataTel
Zeitpunkt des letzten empfangenen Daten-Telegramms in Millisekunden
|
private int |
_lastSendSeqNumDataTel
Sequenznummer des letzten gesendeten Daten-Telegramms
|
private long |
_lastSendTimeAllTel
Zeitpunkt des letzten gesendeten Telegramms (Keep-Alive, Quittung oder Daten) in Millisekunden
|
private long |
_lastSendTimeDataTel
Zeitpunkt des letzten gesendeten Daten-Telegramms in Millisekunden
|
(package private) byte[] |
_packetOnTheAir
Aktuell asynchron zu sendendes Telegramm
|
private java.util.Properties |
_properties
Enthält die online änderbaren Parameter für diese Verbindung
|
private de.bsvrz.kex.tls.osi2osi3.properties.PropertyConsultant |
_propertyConsultant
Wrapper-Objekt zum bequemen Zugriff auf die online änderbaren Parameter dieser Verbindung
|
private java.nio.ByteBuffer |
_readBuffer
Empfangspuffer für empfangene Telegramme
|
private java.nio.ByteBuffer |
_sendBuffer
Sendepuffer für versendete Telegramme
|
private de.bsvrz.sys.funclib.concurrent.PriorityChannel |
_sendChannel
Priorisierte Queue mit den noch zu versendenden Telegrammen
|
private boolean |
_sendKeepAliveTel
Flag das signalisiert, dass ein Keep-Alive-Telegramm versendet werden soll
|
private boolean |
_sendQuittTel
Flag das signalisiert, dass ein Quittungs-Telegramm versendet werden soll
|
private java.nio.channels.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 boolean |
_tcpConnectedWaitingForFirstReceive
Internes Flag für die Verwaltung des Initialen Telegramms.
|
private java.util.Timer |
_timer
Timerobjekt mit dem zukünftige Aktionen geplant und ausgeführt werden
|
private int |
_tlsoipCAcceptPortA
Portnummer des Servers
|
private int |
_tlsoipCHelloDelay
Zeit [s], nach der ein Keep-Alive-Telegramm an die Gegenstelle versendet werden muss (0=ausgeschaltet für
Testzwecke, 1...3599)
|
private int |
_tlsoipCHelloTimeout
Zeit [s], nach der spätestens ein Keep-Alive-Telegramm der Gegenstelle erwartet wird ( > C_HelloDelay der
Gegenstelle), (0=ausgeschaltet für Testzwecke, 1...3600)
|
private int |
_tlsoipCReceiptCount
Anzahl empfangener/gesendeter Telegramme, nach der spätestens ein Quittungstelegramm versendet werden muss/erwartet
wird (1..255)
|
private int |
_tlsoipCReceiptDelay
Zeit [s], nach der nach Erhalt eines Telegramms spätenstens ein Quittierungstelegramm an die Gegenstelle versendet
werden muss (1..59)
|
private int |
_tlsoipCReceiptTimeout
Zeit [s], nach der spätestens ein Quittungstelegramm von der Gegenstelle erwartet wird (> C_ReceiptDelay der
Gegenstelle) (1..60)
|
private boolean |
_tlsoipCReceiptTimeoutGestartet
Flag das signalisiert, dass Timer für die Quittungsüberwachung nach Datenversand einmal gestartet werden muss.
|
private int |
_tlsoipCReconnectDelay
Zeit [s], nach der bei Nichtbestehen einer Verbindung spätestens ein neuer Verbindungsaufbau initiiert werden muss
(0=sofort, 1...3600).
|
private java.lang.String |
_tlsoipCServerAdrA
IP-Adresse des Servers
|
private boolean |
_tlsoipWaitForInitialReceive
Wenn
true, dann wartet das Protokoll nach dem Aufbau der TCP-Verbindung auf den Empfang eines
initialenTelegramms, bevor eine Verbindung als "lebt" gemeldet wird. |
| Modifier | Constructor and Description |
|---|---|
private |
Client.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 Server und plant den erneuten Aufbau der Kommunikationsverbindung nach der
durch den Parameter "tlsoip.C_ReconnectDelay" parameterierbaren Wartezeit ein.
|
private void |
closeChannel(int reconnectDelay)
Schließt den Kommunikationskanal zum Server 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(java.nio.channels.Selector selector)
Initialisiert den Kommunikationskanal für den Datenaustausch.
|
de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer |
getDataLinkLayer() |
int |
getNextSeqNum(int num)
Ermittelt auf Basis der aktullen SeqNum des Daten-Telegramm die nächste folgende Nummer.
|
java.lang.String |
getProperty(java.lang.String name)
Liefert einen Parameterwert zurück.
|
void |
handleAction(Client.ActionType action,
java.nio.channels.Selector selector,
int seqNum,
boolean sofortQuittieren)
Führt eine Aktion für dieses Verbindungsobjekt aus.
|
private void |
handleAsyncSend(java.nio.channels.Selector selector)
Führt den asynchronen Versand von noch zu versendenden Telegrammen aus.
|
void |
handleSelection(java.nio.channels.SelectionKey selectionKey,
java.nio.channels.Selector selector)
Verarbeitet asynchrone Kommunikationsoperationen anhand der vom Selektor des Protokoll-Threads gelieferten
Möglichkeiten
|
private void |
notifyWorker(Client.ActionType action,
int seqNum,
boolean sofortQuittieren)
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. geänderten Parametern
|
private void |
scheduleActionTimer(Client.ActionType actionType,
int delaySeconds)
Plant eine Aktion mit Hilfe eines Timer-Objekts zur späteren Ausführung ein.
|
private void |
scheduleActionTimer(Client.ActionType actionType,
int delaySeconds,
int seqNum)
Plant eine Aktion mit Hilfe eines Timer-Objekts zur späteren Ausführung ein.
|
private void |
scheduleActionTimer(Client.ActionType actionType,
int delaySeconds,
int seqNum,
boolean sofortQuittieren)
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(java.util.Properties properties)
Setzt neue Parameterwerte.
|
void |
shutdown()
Initiiert das Schließen der bestehenden Verbindung dieses Verbindungsobjekts
|
getRemoteAddress, getState, notifyEvent, toStringprivate final de.bsvrz.kex.tls.osi2osi3.properties.PropertyConsultant _propertyConsultant
private final de.bsvrz.sys.funclib.concurrent.PriorityChannel _sendChannel
private int _countReceiptDataTel
private int _countSendDataTel
private int _lastQuittSeqNumDataTel
private int _lastReceiptSeqNumDataTel
private long _lastReceiptTimeAllTel
private long _lastReceiptTimeDataTel
private int _lastSendSeqNumDataTel
private long _lastSendTimeAllTel
private long _lastSendTimeDataTel
private boolean _sendKeepAliveTel
private boolean _sendQuittTel
private java.nio.channels.SocketChannel _socketChannel
null.private int _tlsoipCAcceptPortA
private int _tlsoipCHelloDelay
private int _tlsoipCHelloTimeout
private int _tlsoipCReceiptCount
private int _tlsoipCReceiptDelay
private int _tlsoipCReceiptTimeout
private boolean _tlsoipCReceiptTimeoutGestartet
private int _tlsoipCReconnectDelay
private boolean _tlsoipWaitForInitialReceive
true, dann wartet das Protokoll nach dem Aufbau der TCP-Verbindung auf den Empfang eines
initialenTelegramms, bevor eine Verbindung als "lebt" gemeldet wird.byte[] _packetOnTheAir
private java.util.Properties _properties
private java.lang.String _tlsoipCServerAdrA
private boolean _tcpConnectedWaitingForFirstReceive
private final java.util.Timer _timer
private final java.nio.ByteBuffer _sendBuffer
private final java.nio.ByteBuffer _readBuffer
private Client.Link(int remoteAddress)
remoteAddress - OSI-2 Adresse des Kommunikationspartnerspublic void abort()
abort in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Linkprivate void closeChannel()
private void closeChannel(int reconnectDelay)
reconnectDelay - Wartezeit nach der die Verbindung wieder aufgebaut werden soll.public void connect()
connect in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Linkprivate void connectSocketChannel(java.nio.channels.Selector selector)
selector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.public de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer getDataLinkLayer()
getDataLinkLayer in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Linkpublic int getNextSeqNum(int num)
num - Aktuelle SeqNum des Daten Telegrammspublic java.lang.String getProperty(java.lang.String name)
getProperty in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.LinkgetProperty in interface de.bsvrz.kex.tls.osi2osi3.properties.PropertyQueryInterfacename - Name des gewünschten Parameterwerts.public void handleAction(Client.ActionType action, java.nio.channels.Selector selector, int seqNum, boolean sofortQuittieren)
action - Auszuführende Aktionselector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.seqNum - SequenzNummer des Telegramms, welches quittiert werden sollsofortQuittieren - true, wenn Quittierung in jedem Fall sofort erfolgen soll, sonst
false.private void handleAsyncSend(java.nio.channels.Selector selector)
selector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.public void handleSelection(java.nio.channels.SelectionKey selectionKey,
java.nio.channels.Selector selector)
selectionKey - Vom Selektor des Protokoll-Threads gelieferte Kommunikationsmöglichkeitenselector - Selektor des Protokoll-Threads zum asynchronen Zugriff auf die Kommunikationskanäle.private void notifyWorker(Client.ActionType action, int seqNum, boolean sofortQuittieren)
action - Auszuführende AktionseqNum - SequenzNummer des Telegramms, welches quittiert werden sollsofortQuittieren - true, wenn Quittierung in jedem Fall sofort erfolgen soll, sonst
false.public void reload()
private void scheduleActionTimer(Client.ActionType actionType, int delaySeconds)
actionType - Auszuführende AktiondelaySeconds - Verzögerungszeit in Sekunden nach der die Aktion ausgeführt werden soll.private void scheduleActionTimer(Client.ActionType actionType, int delaySeconds, int seqNum)
actionType - Auszufhrende AktiondelaySeconds - Verzögerungszeit in Sekunden nach der die Aktion ausgeführt werden soll.seqNum - SequenzNummer des letzten empfangenen Datentelegrammsprivate void scheduleActionTimer(Client.ActionType actionType, int delaySeconds, int seqNum, boolean sofortQuittieren)
actionType - Auszufhrende AktiondelaySeconds - Verzögerungszeit in Sekunden nach der die Aktion ausgeführt werden soll.seqNum - SequenzNummer des Telegramms, welches quittiert werden sollsofortQuittieren - true, wenn Quittierung in jedem Fall sofort erfolgen soll, sonst
false.public void send(byte[] bytes,
int priority)
throws java.lang.InterruptedException
send in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Linkbytes - Bytearray mit den Bytes des zu sendenden Telegramms.priority - Priorität des zu sendenden Telegramms.java.lang.InterruptedException - Wenn der aktuelle Thread unterbrochen wurde.public void setProperties(java.util.Properties properties)
setProperties in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Linkproperties - Neue Parameterwerte.public void shutdown()
shutdown in interface de.bsvrz.kex.tls.osi2osi3.osi2.api.DataLinkLayer.Link