public class ClientHighLevelCommunication extends java.lang.Object implements HighLevelCommunicationCallbackInterface
Das Modul Protokollsteuerung ist das Bindeglied der Komponente Kommunikation zwischen den Modulen Telegrammverwaltung und Verwaltung. Es stellt für die Interaktion mit dem Datenverteiler eine Funktionsschnittstelle zur Verfügung, die die technischen Aspekte der Kommunikation gegenüber der Verwaltung kapselt und implementiert die Abbildung auf Telegramme und Kommunikationsabläufe. Die Protokollsteuerung grenzt sich zur Telegrammverwaltung ab, weil hier die aus Sicht der Datenverteiler-Applikationsfunktionen speziellen und nicht wiederverwendbaren Funktionen der Kommunikation mit dem Datenverteiler enthalten sind. Folgende Funktionen und Abläufe werden in der Protokollsteuerung implementiert:
Modifier and Type | Class and Description |
---|---|
private class |
ClientHighLevelCommunication.ClientTelegramInterface |
private class |
ClientHighLevelCommunication.SendControlNotifier
Asynchrone Verarbeitung von empfangenen Sendsteuerungstelegrammen.
|
Modifier and Type | Field and Description |
---|---|
private long |
_applicationId
Die Applikation Id
|
private AuthenticationStatus |
_authenticationStatus
Zustand der Authentifizierung
|
private CacheManager |
_cacheManager
Der Cache-Manager (Teil der Verwaltung).
|
private ApplicationCloseActionHandler |
_closer
Das Objekt, das für das Schliessen nach Auftritt eines Fehlers zuständig ist.
|
private ConfigurationManager |
_configurationManager
Der Konfigurationsmanager (Teil der Verwaltung).
|
private DavConnectionListener |
_connectionListener
Beobachter für Zustandsänderungen der Datenverteilerverbindung.
|
private int |
_dafVersion
Die verwendete Protokollversion
|
private static Debug |
_debug
Der Debug-Logger.
|
private boolean |
_disconnecting
Wird beim ersten Aufruf von terminate(…) gesetzt.
|
private boolean |
_disconnectingOnError
Wird beim ersten Aufruf von terminate(true, …) gesetzt.
|
private long |
_localConfigurationId
Die lokale Konfiguration Id
|
private long |
_localDVId
Die lokale Datenverteiler-Id
|
private boolean |
_readyForConfigDependantData
Hält die Informationen über den Initialisierungszustand dieser Komponente.
|
private ClientHighLevelCommunication.SendControlNotifier |
_sendControlNotifier
Asynchrone Verarbeitung von empfangenen Sendsteuerungstelegrammen
|
private SubscriptionManager |
_subscriptionManager
Der Anmeldemanager (Teil der Verwaltung).
|
private static java.util.Set<java.lang.Integer> |
_supportedProtocolVersions
Alle unterstützten Protokollversionen
|
private java.util.List<DataTelegram> |
_syncSystemTelegramList
Temporäre Liste der Systemtelegramme für interne Synchronisationszwecke.
|
private long |
_userId
Die Id des Benutzers
|
private static boolean |
DO_NOT_SEND_AUTH_REQUEST_FOR_TESTS |
private ClientConnectionProperties |
properties
Die Kommunikationseingenschaften
|
private SplittedApplicationTelegramsTable |
splittedTelegramsTable
Temporäre Liste der zerstückelten Telegramme.
|
Constructor and Description |
---|
ClientHighLevelCommunication()
Dieser Konstruktor wird für JUnit-Tests gebraucht.
|
ClientHighLevelCommunication(ClientDavParameters clientDavParameters,
ApplicationCloseActionHandler closer)
Dieser Konstruktor erzeugt eine Instanz dieser Klasse mit den übergebenen Parametern.
|
Modifier and Type | Method and Description |
---|---|
private AuthentificationAnswer |
authenticateHMAC(ClientCredentials clientCredentials)
Authentifizierung mittels eines HMAC-Verfahrens (o.ä.) über das Interface
AuthentificationProcess . |
private AuthentificationAnswer |
authenticateSRP(ClientCredentials clientCredentials)
Authentifizierung mittels SRP, ein Verfahren bei dem der Server das Passwort nicht kennen muss und das einen Session-Key zur Verschlüsselung erzeugen kann.
|
private AuthentificationAnswer |
authentify(byte[] encryptedUserPassword)
Schickt ein Authentifikations-Telegramm zum Datenverteiler und wartet auf seine Antwort.
|
void |
completeInitialisation(ConfigurationManager configurationManager,
CacheManager cacheManager,
SubscriptionManager subscriptionManager)
Schließt die Initialisierung ab.
|
void |
disconnected(boolean error,
java.lang.String message)
Wird von der unteren Kommunikationsschicht in Fehlersituationen zum Abbruch der Kommunikationsverbindung aufgerufen.
|
long |
getApplicationId()
Gibt die Id der Applikation zurück.
|
AuthenticationStatus |
getAuthenticationStatus() |
private AuthentificationTextAnswer |
getAuthentificationText()
Schickt ein AuthentifikationsText-Telegramm zum Datenverteiler und wartet auf seine Antwort.
|
private ComParametersAnswer |
getComParameters()
Schickt ein ComParameter-Telegramm zum Datenverteiler und wartet auf seine Antwort.
|
long |
getConfigurationId()
Gibt die Id der Konfiguration zurück.
|
ClientConnectionProperties |
getConnectionProperties()
Diese Methode gibt die Eigenschaften dieser Verbindung zurück.
|
private DataTelegram |
getDataTelegram(long maximumWaitingTime,
byte telegramType)
Diese Methode dient dem reduzieren von doppeltem Code.
|
long |
getDataTransmitterId()
Gibt die Id des Datenverteilers zurück.
|
EncryptionStatus |
getEncryptionStatus() |
private ProtocolVersionAnswer |
getProtocolVersions()
Schickt ein Protokollversions-Telegramm zum Datenverteiler und wartet auf seine Antwort.
|
java.util.List<DataTelegram> |
getSyncSystemTelegramList()
Gibt die temporäre Liste der Systemtelegramme für interne Synchronisationszwecke zurück.
|
long |
getTelegramTime(long maxWaitingTime)
Schickt ein Laufzeitermittlungs-Telegramm zum Datenverteiler und wartet auf seine Antwort, um herauszubekommen, wie viel Zeit die Übertragung in Anspruch nimmt.
|
long |
getUserId()
Gibt die Id des Benutzers zurück.
|
boolean |
isDisconnecting()
Gibt true zurück, wenn die Verbindung getrennt wurde
|
private boolean |
isSelfClientDavConnection() |
void |
login(ClientCredentials clientCredentials)
Die Methode erstellt eine logische Verbindung zum Datenverteiler, d. h. die Authentifizierung der Applikation und das Einstellen der Kommunikationsparameter wird durchgeführt, damit der Austausch von Daten sicher durchgeführt werden kann.
|
private void |
notifyConnectionClosed()
Wird die Verbindung zum Datenverteiler terminiert, so wird dem Beobachter, der sich dafür interessiert, dieses mitgeteilt.
|
void |
sendData(SendDataObject dataToSend)
Versendet ein Applikationsdatentelegramm an den Datenverteiler.
|
void |
sendReceiveSubscription(ReceiveSubscriptionInfo subscription)
Es wird ein
Empfangsanmeldungstelegramm erstellt und zum Datenverteiler gesendet. |
void |
sendReceiveUnsubscription(BaseSubscriptionInfo unsubscription)
Es wird ein
Empfangsabmeldungstelegramm erstellt und zum Datenverteiler gesendet. |
void |
sendSendSubscription(SendSubscriptionInfo subscription)
Es wird ein
Sendeanmeldetelegramm erstellt und zum Datenverteiler gesendet. |
void |
sendSendUnsubscription(BaseSubscriptionInfo unsubscription)
Es wird ein
Sendeabmeldetelegramm erstellt und zum Datenverteiler gesendet. |
void |
setCloseHandler(ApplicationCloseActionHandler closer)
Setzt den
ApplicationCloseActionHandler dieser Subkomponente. |
void |
setConnectionListener(DavConnectionListener connectionListener)
Meldet einen Beobachter für Zustandsänderungen der Datenverteilerverbindung an.
|
void |
setReadyForConfigDependantData()
Diese Methode wird vom Anmeldungsmanager aufgerufen, nachdem die Anmeldungen erfolgreich abgeschlossen sind, die eine gerichtete Kommunikation mit der Konfiguration gewährleisten.
|
void |
terminate(boolean error,
java.lang.String message)
Die bestehende Verbindung zum Datenverteiler wird terminiert, und der Kommunikationskanal wird geschlossen.
|
void |
terminate(boolean error,
java.lang.String message,
DataTelegram terminationTelegram) |
void |
update(DataTelegram telegram)
Wird von der unteren Kommunikationsschicht nach Empfang eines Telegramms aufgerufen.
|
void |
updateConfigData(SendDataObject receivedData)
Wenn ein neues Konfigurationstelegramm angekommen ist, wird es an die Verwaltung weitergeleitet.
|
private static final Debug _debug
Der Debug-Logger.
private static final java.util.Set<java.lang.Integer> _supportedProtocolVersions
Alle unterstützten Protokollversionen
private int _dafVersion
Die verwendete Protokollversion
private long _userId
Die Id des Benutzers
private long _applicationId
Die Applikation Id
private long _localConfigurationId
Die lokale Konfiguration Id
private long _localDVId
Die lokale Datenverteiler-Id
private ConfigurationManager _configurationManager
Der Konfigurationsmanager (Teil der Verwaltung).
private CacheManager _cacheManager
Der Cache-Manager (Teil der Verwaltung).
private SubscriptionManager _subscriptionManager
Der Anmeldemanager (Teil der Verwaltung).
private final java.util.List<DataTelegram> _syncSystemTelegramList
Temporäre Liste der Systemtelegramme für interne Synchronisationszwecke.
private SplittedApplicationTelegramsTable splittedTelegramsTable
Temporäre Liste der zerstückelten Telegramme.
private boolean _readyForConfigDependantData
Hält die Informationen über den Initialisierungszustand dieser Komponente.
private volatile boolean _disconnecting
Wird beim ersten Aufruf von terminate(…) gesetzt.
private volatile boolean _disconnectingOnError
Wird beim ersten Aufruf von terminate(true, …) gesetzt.
private ApplicationCloseActionHandler _closer
Das Objekt, das für das Schliessen nach Auftritt eines Fehlers zuständig ist.
private ClientConnectionProperties properties
Die Kommunikationseingenschaften
private DavConnectionListener _connectionListener
Beobachter für Zustandsänderungen der Datenverteilerverbindung.
private ClientHighLevelCommunication.SendControlNotifier _sendControlNotifier
Asynchrone Verarbeitung von empfangenen Sendsteuerungstelegrammen
private AuthenticationStatus _authenticationStatus
Zustand der Authentifizierung
private static boolean DO_NOT_SEND_AUTH_REQUEST_FOR_TESTS
public ClientHighLevelCommunication(ClientDavParameters clientDavParameters, ApplicationCloseActionHandler closer) throws CommunicationError, ConnectionException
Dieser Konstruktor erzeugt eine Instanz dieser Klasse mit den übergebenen Parametern. ClientDavParameters
enthält die Adresse und Subadresse des Datenverteilers, spezifiziert das zu verwendende Protokoll durch dessen Namen. ApplicationCloseActionHandler
bestimmt wie die Applikationsfunktion auf einen Kommunikationsfehler reagieren soll.
ClientConnectionProperties
werden erzeugt, die die Eigenschaften dieser Verbindung verkörpern. Sie spezifizieren insbesondere den AuthentificationProcess
, das für die Passwortverschlüsselung zuständige Verfahren. Weiter enthalten sie die PID der Konfiguration.
Ein Systemtelegramm ProtocolVersionRequest
wird gebildet und zum Datenverteiler gesendet. Es enthält Angaben über die unterstützte Protokollversion. Auf die Antwort wird eine festgelegte Zeit gewartet (maximale Wartezeit auf synchrone Antworten). Wenn die Antwort nicht innerhalb diese Zeit an-gekommen ist oder die Protokollversion vom Datenverteiler nicht unterstützt wird, dann wird eine CommunicationError-Ausnahme erzeugt.
clientDavParameters
- Parameterklasse für die Datenverteiler-Applikationsfunktionencloser
- bestimmt, wie die Applikationsfunktionen auf einen Kommunikationsfehler reagieren sollCommunicationError
- Wenn die Verhandlung der Protokollversion nicht durchgeführt wurde oder die Protokollversion nicht unterstützt wird.ConnectionException
- Wenn die Verbindung über die Telegrammverwaltung fehlschlägt.public ClientHighLevelCommunication()
Dieser Konstruktor wird für JUnit-Tests gebraucht.
public boolean isDisconnecting()
Gibt true zurück, wenn die Verbindung getrennt wurde
public EncryptionStatus getEncryptionStatus()
public AuthenticationStatus getAuthenticationStatus()
public final void completeInitialisation(ConfigurationManager configurationManager, CacheManager cacheManager, SubscriptionManager subscriptionManager)
Schließt die Initialisierung ab. Diese Methode wird von ClientDavConnection aufgerufen. Es werden Referenzen auf den Konfigurationsmanager, den Cache-Manager und den Anmeldungsmanager festgehalten. Zusätzlich wird eine Referenz auf ClientHighLevelCommunication an den Anmeldungsmanager übergeben.
configurationManager
- der KonfigurationsmanagercacheManager
- der Cache-ManagersubscriptionManager
- der Anmeldungsmanagerpublic long getApplicationId()
Gibt die Id der Applikation zurück.
public final long getDataTransmitterId()
Gibt die Id des Datenverteilers zurück.
public final long getConfigurationId()
Gibt die Id der Konfiguration zurück.
public final long getUserId()
Gibt die Id des Benutzers zurück.
public final void setReadyForConfigDependantData()
Diese Methode wird vom Anmeldungsmanager aufgerufen, nachdem die Anmeldungen erfolgreich abgeschlossen sind, die eine gerichtete Kommunikation mit der Konfiguration gewährleisten. Dadurch signalisiert der Anmeldungsmanager die Bereitschaft, Datensätze zu empfangen, die Konfigurationsdaten benötigen, um interpretiert zu werden.
public final void setCloseHandler(ApplicationCloseActionHandler closer)
Setzt den ApplicationCloseActionHandler
dieser Subkomponente. Dieser bestimmt wie die Applikationsfunktion auf einen Kommunikationsfehler reagieren soll.
closer
- ApplicationCloseActionHandler
public final void login(ClientCredentials clientCredentials) throws InconsistentLoginException, CommunicationError
Die Methode erstellt eine logische Verbindung zum Datenverteiler, d. h. die Authentifizierung der Applikation und das Einstellen der Kommunikationsparameter wird durchgeführt, damit der Austausch von Daten sicher durchgeführt werden kann. Ein AuthentificationTextRequest
-Telegramm mit der Konfigurations-PID wird über die Telegrammverwaltung
zum Datenverteiler gesendet, um einen Schlüssel für die Authentifizierung anzufordern. Auf die Antwort AuthentificationTextAnswer
wird eine gewisse Zeit gewartet (maximale Wartezeit auf synchrone Antworten). Mit dem vom Datenverteiler erhaltenen Schlüssel wird das Benutzerpasswort durch den AuthentificationProcess
verschlüsselt und als AuthentificationRequest
zum Datenverteiler gesendet. Auch hier wird eine gewisse Zeit auf die Antwort AuthentificationAnswer
gewartet (maximale Wartezeit auf synchrone Antworten). Wenn die Authentifizierung erfolgreich ist, werden die Ids der Applikation, des Datenverteilers, der Konfiguration und des Benutzers übertragen und von dieser Subkomponente festgehalten. Wird als Id der Konfiguration -1
zurückgegeben, so war die spezifizierte PID dem System nicht bekannt. Sonst werden die Keep-alive-Parameter und die Durchsatzprüfungsparameter mit dem Datenverteiler verhandelt. Ein ComParametersRequest
wird zum Datenverteiler gesendet. Auch hier wird auf die Antwort ComParametersAnswer
eine gewisse Zeit gewartet (maximale Wartezeit auf synchrone Antworten).
clientCredentials
- Passwort oder Login-TokenInconsistentLoginException
- Wenn die Authentifizierung nicht erfolgreich abgeschlossen werden konnte.CommunicationError
- Wenn eine Antwort nicht innerhalb einer parametrierten Zeit vom Datenverteiler beantwortet wird oder wenn als Id der Konfiguration eine -1
ermittelt wird.private AuthentificationAnswer authenticateHMAC(ClientCredentials clientCredentials) throws CommunicationError
Authentifizierung mittels eines HMAC-Verfahrens (o.ä.) über das Interface AuthentificationProcess
. Dabei sendet der Server an den Client einen Zufallstext welches der Client zusammen mit seinem Passwort (Einweg-)verschlüsselt. Der Server macht das selbe und kann bei Übereinstimmung der Hashes annehmen, dass der Client das Passwort kennt.
clientCredentials
- Passwort (Bei Login-Token wird ein Fehler ausgelöst)CommunicationError
- Verbindungsfehler (Server Antwortet nicht)private AuthentificationAnswer authenticateSRP(ClientCredentials clientCredentials) throws CommunicationError, InconsistentLoginException, SrpNotSupportedException
Authentifizierung mittels SRP, ein Verfahren bei dem der Server das Passwort nicht kennen muss und das einen Session-Key zur Verschlüsselung erzeugen kann. Siehe http://connect2id.com/products/nimbus-srp
clientCredentials
- Passwort oder Login-TokenCommunicationError
- Verbindungsfehler (Server Antwortet nicht)InconsistentLoginException
SrpNotSupportedException
private boolean isSelfClientDavConnection()
public void sendReceiveSubscription(ReceiveSubscriptionInfo subscription)
Es wird ein Empfangsanmeldungstelegramm
erstellt und zum Datenverteiler gesendet.
subscription
- die Empfangsanmeldeinformationenpublic final void sendReceiveUnsubscription(BaseSubscriptionInfo unsubscription)
Es wird ein Empfangsabmeldungstelegramm
erstellt und zum Datenverteiler gesendet.
unsubscription
- die Empfangsabmeldeinformationenpublic void sendSendSubscription(SendSubscriptionInfo subscription)
Es wird ein Sendeanmeldetelegramm
erstellt und zum Datenverteiler gesendet.
subscription
- die Sendeanmeldeinformationenpublic final void sendSendUnsubscription(BaseSubscriptionInfo unsubscription)
Es wird ein Sendeabmeldetelegramm
erstellt und zum Datenverteiler gesendet.
unsubscription
- die Sendeabmeldeinformationenpublic final void sendData(SendDataObject dataToSend)
Versendet ein Applikationsdatentelegramm an den Datenverteiler. Falls der zu sendende Datensatz größer ist, als die im System gesetzte maximale Länge eines Telegramms, wird er in Teiltelegramme zerstückelt und zum Datenverteiler gesendet.
dataToSend
- die zu sendenden Daten als Bytefeld vorbereitetpublic final void terminate(boolean error, java.lang.String message)
Die bestehende Verbindung zum Datenverteiler wird terminiert, und der Kommunikationskanal wird geschlossen. Wenn der Parameter error
gesetzt ist, wird die close-Methode vom ApplicationCloseActionHandler
aufgerufen.
error
- Ist true
, wenn die Verbindung im Fehlerfall abgebrochen werden soll, ohne die noch gepufferten Telegramme zu versenden; false
, wenn versucht werden soll alle gepufferten Telegramme zu versenden.message
- Fehlermeldung, die die Fehlersituation näher beschreibt.public final void terminate(boolean error, java.lang.String message, DataTelegram terminationTelegram)
public void disconnected(boolean error, java.lang.String message)
HighLevelCommunicationCallbackInterface
Wird von der unteren Kommunikationsschicht in Fehlersituationen zum Abbruch der Kommunikationsverbindung aufgerufen.
disconnected
in interface HighLevelCommunicationCallbackInterface
error
- true
signalisiert eine Fehlersituation der unteren Kommunikationsschicht.message
- Fehlermeldung, die die Fehlersituation näher beschreibt.public final void update(DataTelegram telegram) throws java.lang.InterruptedException
Wird von der unteren Kommunikationsschicht nach Empfang eines Telegramms aufgerufen.
Erhält ein Aktualisierungsdatum vom Datenverteiler. Diese Methode wird von derLowLevelCommunication
aufgerufen, wenn ein neues Telegramm angekommen ist. Sie reagiert nur auf die Telegramme, die für die Applikation von Interesse sind. Neu ankommende Telegramme werden je nach Typ unterschiedlich weiterverarbeitet:
Wenn das Telegramm vom Typ AuthentificationTextAnswer
, AuthentificationAnswer
, ComParametersAnswer
, ProtocolVersionAnswer
oder TelegramTimeAnswer
ist, wird es in eine Liste eingefügt und eine Broadcast-Nachricht an alle wartenden Methoden gesendet. Diese überprüfen ob die Nachricht für sie relevant ist. In diesem Falle wird sie aus der Liste entfernt und bearbeitet.
Wenn das Telegramm vom Typ TelegramTimeRequest
ist, wird anhand der übergebenen gemessene Zeit ein TelegramTimeAnswer
gebildet und zum Datenverteiler gesendet.
Wenn das Telegramm vom Typ RequestSenderDataTelegram
ist, wird die Methode notifySenderApplication
des Anmeldungsmanagers aufgerufen, um die Applikation zu benachrichtigen.
Wenn das Telegramm vom Typ ApplicationDataTelegram
ist, wird zunächst überprüft, ob ein zerstückeltes Telegramm vorliegt. Ist dies der Fall, dann wird es in eine Liste eingefügt und überprüft ob alle Teiltelegramme vorhanden sind. Sind alle vorhanden, wird aus den Telegrammen ein SendDataObject
erzeugt, das weiterverarbeitet werden kann. Wenn das Telegramm nicht zerstückelt ist, wird es sofort in ein SendDataObject
zur Weiterbearbeitung umgewandelt. Wenn dieses erfolgreich erzeugt wurde, wird anhand seiner Basisanmeldeinformation überprüft, ob es eine Antwort einer Konfigurationsanfrage ist. Ist dies der Fall, so wird das Telegramm der update
-Methode des Konfigurations-Managers übergeben, wenn nicht, handelt es sich um ein Online-Telegramm und es wird an die update
-Methode des Cache-Managers übergeben.
Wenn das Telegramm vom Typ ClosingTelegram
oder TerminateOrderTelegram
ist, wird die Methode terminate(boolean, java.lang.String)
aufgerufen.
Jeder andere Telegrammtyp wird ignoriert.
update
in interface HighLevelCommunicationCallbackInterface
telegram
- Das empfangene Telegrammjava.lang.InterruptedException
- Wenn der Thread während eines blockierenden Aufrufs unterbrochen wurdepublic final void updateConfigData(SendDataObject receivedData)
HighLevelCommunicationCallbackInterface
Wenn ein neues Konfigurationstelegramm angekommen ist, wird es an die Verwaltung weitergeleitet.
updateConfigData
in interface HighLevelCommunicationCallbackInterface
receivedData
- das Konfigurationstelegrammpublic final ClientConnectionProperties getConnectionProperties()
Diese Methode gibt die Eigenschaften dieser Verbindung zurück.
private ProtocolVersionAnswer getProtocolVersions()
Schickt ein Protokollversions-Telegramm zum Datenverteiler und wartet auf seine Antwort.
null
, falls die Antwort nicht ermittelt werden konnte.private DataTelegram getDataTelegram(long maximumWaitingTime, byte telegramType)
Diese Methode dient dem reduzieren von doppeltem Code. Aus einer Telegrammliste wird das gewünschte Telegramm herausgesucht und zurückgegeben.
maximumWaitingTime
- die gewünschte maximale WartezeittelegramType
- den gewünschten Telegramm-Typprivate AuthentificationTextAnswer getAuthentificationText()
Schickt ein AuthentifikationsText-Telegramm zum Datenverteiler und wartet auf seine Antwort.
null
, falls sie nicht ermittelt werden konnte.private AuthentificationAnswer authentify(byte[] encryptedUserPassword)
Schickt ein Authentifikations-Telegramm zum Datenverteiler und wartet auf seine Antwort.
encryptedUserPassword
- das verschlüsselte Passwort des Benutzersnull
, falls die Antwort nicht ermittelt werden konnte.private ComParametersAnswer getComParameters()
Schickt ein ComParameter-Telegramm zum Datenverteiler und wartet auf seine Antwort.
null
, falls die Antwort nicht ermittelt werden konnte.public final long getTelegramTime(long maxWaitingTime) throws CommunicationError
Schickt ein Laufzeitermittlungs-Telegramm zum Datenverteiler und wartet auf seine Antwort, um herauszubekommen, wie viel Zeit die Übertragung in Anspruch nimmt.
maxWaitingTime
- Zeit in Millisekunden, die maximal auf eine Antwort gewartet wird.-1
falls innerhalb der angegebenen Timeout-Zeit keine Antwort empfangen wurde.CommunicationError
- Falls die Verbindung zum Datenverteiler gestört ist.public void setConnectionListener(DavConnectionListener connectionListener)
Meldet einen Beobachter für Zustandsänderungen der Datenverteilerverbindung an.
connectionListener
- Beobachter für Zustandsänderungen der Datenverteilerverbindungprivate void notifyConnectionClosed()
Wird die Verbindung zum Datenverteiler terminiert, so wird dem Beobachter, der sich dafür interessiert, dieses mitgeteilt.
public java.util.List<DataTelegram> getSyncSystemTelegramList()
Gibt die temporäre Liste der Systemtelegramme für interne Synchronisationszwecke zurück.