public class T_T_HighLevelCommunication extends Object implements T_T_HighLevelCommunicationInterface, HighLevelCommunicationCallbackInterface
Modifier and Type | Field and Description |
---|---|
private AuthentificationComponent |
_authentificationComponent
Die Authentifizierungskomponente
|
private Integer |
_authentificationSync
Objekt zur internen Synchronization
|
private String |
_authentifyAsUser
Benutzername mit dem sich dieser Datenverteiler beim anderen Datenverteiler authentifizieren soll
|
private String |
_authentifyWithPassword
Passwort des Benutzers mit dem sich dieser Datenverteiler beim anderen Datenverteiler authentifizieren soll
|
private boolean |
_closed
Signalisiert dass diese Verbindung terminiert ist
|
private Object |
_closedLock |
private long |
_connectedTransmitterId
Die Id des über diesen Kanal verbundenen Datenverteiler
|
private static Debug |
_debug |
private LinkedList<DataTelegram> |
_fastTelegramsList
Temporäre Liste der Telegramme, die vor die Initialisierung eingetroffen sind.
|
private boolean |
_initComplete
Signalisiert ob die Initialisierungsphase abgeschlossen ist
|
private boolean |
_isAcceptedConnection
Legt fest ob eine gegen Authentifizierung notwendig ist.
|
private LowLevelCommunicationInterface |
_lowLevelCommunication
Die erste Ebene der Kommunikation
|
private LowLevelConnectionsManagerInterface |
_lowLevelConnectionsManager |
private ServerConnectionProperties |
_properties
Die Eigenschaften dieser Verbindung
|
private long |
_remoteUserId
Die Id des Remotebenutzers
|
private Integer |
_sync
Objekt zur internen Synchronization
|
private LinkedList<DataTelegram> |
_syncSystemTelegramList
Temporäre Liste der Systemtelegramme für interne Synchronisationszwecke.
|
private HighLevelTransmitterManagerInterface |
_transmitterManager |
private int |
_version
Die Version, mit der die Kommunikation erfolgt
|
private int[] |
_versions
Die unterstützten Versionen des Datenverteilers
|
private boolean |
_waitForConfiguration
Die Information ob auf die Konfiguration gewartet werden muss.
|
private short |
_weight
Gewichtung dieser Verbindung
|
Constructor and Description |
---|
T_T_HighLevelCommunication(ServerConnectionProperties properties,
HighLevelTransmitterManagerInterface transmitterManager,
LowLevelConnectionsManagerInterface lowLevelConnectionsManager,
short weight,
boolean waitForConfiguration,
String authentifyAsUser,
String authentifyWithPassword)
Erzeugt ein neues Objekt mit den gegebenen Parametern.
|
Modifier and Type | Method and Description |
---|---|
private void |
authentify()
Erledigt den Authentifizierungsprozess.
|
boolean |
completeInitialisation()
Diese Methode wird von der Verbindungsverwaltung aufgerufen, um die Initialisierung einer Verbindung abzuschließen.
|
void |
connect()
Diese Methode wird von der Verbindungsverwaltung aufgerufen, um eine logische Verbindung zwischen zwei Datenverteilern herzustellen.
|
void |
continueAuthentification()
Diese Methode wird von der Verbindungsverwaltung aufgerufen, sobald die Konfiguration vorhanden ist, um zu signalisieren, dass eine blockierte
Authentifizierung weiter bearbeitet werden kann: Steht eine Authentifizierungsschlüsselanfrage an, während die Konfiguration noch nicht vorhanden ist, wird
die Antwort blockiert bis die Konfiguration bereit ist.
|
void |
disconnected(boolean error,
String message)
Wird von der unteren Kommunikationsschicht in Fehlersituationen zum Abbruch der Kommunikationsverbindung aufgerufen.
|
long |
getId()
Diese Methode wird von der Verbindungsverwaltung aufgerufen, um die ID der verbundenen Applikation zu erhalten.
|
LowLevelConnectionsManagerInterface |
getLowLevelConnectionsManager() |
private int |
getPrefferedVersion(int[] versions)
Gibt die höchhste unterstützte Version aus den gegebenen Versionen oder -1, wenn keine von den gegebenen Versionen unterstützt wird, zurück.
|
String |
getRemoteAdress() |
long |
getRemoteNodeId()
Diese Methode gibt die ID des Zielknotens zurück.
|
int |
getRemoteSubadress()
Diese Methode gibt die Subadresse des Kommunikationspartners zurück.
|
long |
getRemoteUserId()
Gibt die ID des verbundenen Benutzers zurück.
|
long |
getTelegramTime(long maxWaitingTime)
Diese Methode wird von der Verbindungsverwaltung aufgerufen.
|
int |
getThroughputResistance()
Diese Methode gibt die Gewichtung der Verbindung zurück.
|
boolean |
isAcceptedConnection()
Gibt die Information zurück, ob diese Verbindung von dem anderen Datenverteiler akzeptiert wurde.
|
(package private) boolean |
isClosed() |
void |
sendData(ApplicationDataTelegram telegram,
boolean toCentralDistributor)
Versendet ein Daten-Telegramm übr diese Verbindung
|
void |
sendReceipt(long centralTransmitterId,
ConnectionState state,
TransmitterSubscriptionType receiver,
RemoteSubscription remoteReceiverSubscription)
Sendet eine Quittung auf eine Datenanmeldung zurück bzw.
|
void |
sendRoutingUpdate(RoutingUpdate[] routingUpdates)
Diese Methode findet die besten Wege.
|
void |
sendTelegram(DataTelegram telegram)
Diese Methode wird von der Verbindungsverwaltung, der Zuliefererverwaltung und der Anmeldungsverwaltung aufgerufen.
|
void |
sendTelegrams(DataTelegram[] telegrams)
Mehrere Telegramme können en bloc versandt werden.
|
void |
subscribeToRemote(RemoteCentralSubscription remoteCentralSubscription)
Sorgt für eine Datenanmeldung bei einem entfernten Zentraldatenverteiler.
|
void |
terminate(boolean error,
String message)
Terminiert die Kommunikationsverbindung.
|
void |
terminate(boolean error,
String message,
DataTelegram terminationTelegram) |
String |
toString() |
void |
unsubscribeToRemote(RemoteCentralSubscription remoteCentralSubscription)
Sorgt für Datenabmeldung bei einem entfernten Zentraldatenverteiler.
|
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 DataTelegram |
waitForAnswerTelegram(byte telegramType,
String descriptionOfExpectedTelegram) |
private static final Debug _debug
private long _connectedTransmitterId
private long _remoteUserId
private LowLevelCommunicationInterface _lowLevelCommunication
private ServerConnectionProperties _properties
private int[] _versions
private int _version
private AuthentificationComponent _authentificationComponent
private final LinkedList<DataTelegram> _syncSystemTelegramList
private final LinkedList<DataTelegram> _fastTelegramsList
private short _weight
private boolean _initComplete
private boolean _waitForConfiguration
private Integer _sync
private Integer _authentificationSync
private boolean _isAcceptedConnection
private volatile boolean _closed
private Object _closedLock
private String _authentifyAsUser
private final HighLevelTransmitterManagerInterface _transmitterManager
private final LowLevelConnectionsManagerInterface _lowLevelConnectionsManager
private String _authentifyWithPassword
public T_T_HighLevelCommunication(ServerConnectionProperties properties, HighLevelTransmitterManagerInterface transmitterManager, LowLevelConnectionsManagerInterface lowLevelConnectionsManager, short weight, boolean waitForConfiguration, String authentifyAsUser, String authentifyWithPassword)
properties
- Eigenschaften dieser VerbindunglowLevelConnectionsManager
- weight
- Gewichtung dieser VerbindungwaitForConfiguration
- true: auf die KOnfiguration muss gewartet werden, false: Konfiguration ist vorhandenauthentifyAsUser
- Benutzername mit dem sich dieser Datenverteiler beim anderen Datenverteiler authentifizieren sollauthentifyWithPassword
- Passwort des Benutzers mit dem sich dieser Datenverteiler beim anderen Datenverteiler authentifizieren sollpublic final void connect() throws CommunicationError
CommunicationError
- , wenn bei der initialen Kommunikation mit dem Datenverteiler Fehler aufgetreten sindpublic LowLevelConnectionsManagerInterface getLowLevelConnectionsManager()
boolean isClosed()
true
zurück, falls die Verbindung geschlossen wurde, sonst false
.private DataTelegram waitForAnswerTelegram(byte telegramType, String descriptionOfExpectedTelegram) throws CommunicationError
CommunicationError
public final long getTelegramTime(long maxWaitingTime) throws CommunicationError
ServerHighLevelCommunication
TelegramTimeRequest
wird erzeugt und zur Applikation gesendet. Danach
wird auf die Antwort TelegramTimeAnswer
gewartet. Wenn die Antwort nicht innerhalb der angegebenen
maximalen Wartezeit angekommen ist, wird eine Ausnahme
erzeugt.getTelegramTime
in interface ServerHighLevelCommunication
maxWaitingTime
- Maximale Zeit, die auf eine Antwort gewartet wird.-1
, wenn nicht innnerhalb der maximalen Wartezeit eine Antwort empfangen wurde.CommunicationError
- Wenn bei der initialen Kommunikation mit dem Datenverteiler Fehler aufgetreten sind.public final long getRemoteNodeId()
RoutingConnectionInterface
getRemoteNodeId
in interface RoutingConnectionInterface
public final int getThroughputResistance()
RoutingConnectionInterface
getThroughputResistance
in interface RoutingConnectionInterface
getThroughputResistance
in interface TransmitterCommunicationInterface
public final void sendRoutingUpdate(RoutingUpdate[] routingUpdates)
RoutingConnectionInterface
sendRoutingUpdate
in interface RoutingConnectionInterface
routingUpdates
- Aktualisierung der Verbindungpublic final long getRemoteUserId()
ServerHighLevelCommunication
getRemoteUserId
in interface ServerHighLevelCommunication
getRemoteUserId
in interface CommunicationInterface
public final long getId()
ServerHighLevelCommunication
getId
in interface ServerHighLevelCommunication
getId
in interface CommunicationInterface
public final boolean isAcceptedConnection()
public final String getRemoteAdress()
public final int getRemoteSubadress()
public void continueAuthentification()
ServerHighLevelCommunication
continueAuthentification
in interface ServerHighLevelCommunication
public void terminate(boolean error, String message)
ServerHighLevelCommunication
terminate
in interface ServerHighLevelCommunication
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, String message, DataTelegram terminationTelegram)
public void disconnected(boolean error, String message)
de.bsvrz.dav.daf.communication.lowLevel.HighLevelCommunicationCallbackInterface
disconnected
in interface HighLevelCommunicationCallbackInterface
error
- true
signalisiert eine Fehlersituation der unteren Kommunikationsschicht.message
- Fehlermeldung, die die Fehlersituation näher beschreibt.public void updateConfigData(SendDataObject receivedData)
de.bsvrz.dav.daf.communication.lowLevel.HighLevelCommunicationCallbackInterface
updateConfigData
in interface HighLevelCommunicationCallbackInterface
receivedData
- das Konfigurationstelegrammpublic void sendTelegram(DataTelegram telegram)
T_T_HighLevelCommunicationInterface
sendTelegram
in interface T_T_HighLevelCommunicationInterface
telegram
- Grundtyp eines Telegrammspublic void sendTelegrams(DataTelegram[] telegrams)
T_T_HighLevelCommunicationInterface
sendTelegrams
in interface T_T_HighLevelCommunicationInterface
telegrams
- Feld von zu sendenden TelegrammenT_T_HighLevelCommunicationInterface.sendTelegram(de.bsvrz.dav.daf.communication.lowLevel.telegrams.DataTelegram)
public void update(DataTelegram telegram)
de.bsvrz.dav.daf.communication.lowLevel.HighLevelCommunicationCallbackInterface
update
in interface HighLevelCommunicationCallbackInterface
telegram
- Das empfangene Telegrammpublic final boolean completeInitialisation()
private int getPrefferedVersion(int[] versions)
versions
- Feld der Versionenprivate void authentify() throws CommunicationError
de.bsvrz.dav.daf.main.CommunicationError,
- wenn bei der initialen Kommunikation mit dem Datenverteiler Fehler aufgetreten sindCommunicationError
public void subscribeToRemote(RemoteCentralSubscription remoteCentralSubscription)
TransmitterCommunicationInterface
subscribeToRemote
in interface TransmitterCommunicationInterface
remoteCentralSubscription
- Anmeldeinformation auf einen Zentraldatenverteilerpublic void unsubscribeToRemote(RemoteCentralSubscription remoteCentralSubscription)
TransmitterCommunicationInterface
unsubscribeToRemote
in interface TransmitterCommunicationInterface
remoteCentralSubscription
- Anmeldeinformation auf einen Zentraldatenverteilerpublic final void sendData(ApplicationDataTelegram telegram, boolean toCentralDistributor)
CommunicationInterface
sendData
in interface CommunicationInterface
telegram
- TelegrammtoCentralDistributor
- true: In Richtung des Zentraldatenverteilers, beim Sender-Senke-Datenfluss.
false: Aus Richtung des Zentraldatenverteilers, beim Quelle-Empfänger-Datenfluss.public void sendReceipt(long centralTransmitterId, ConnectionState state, TransmitterSubscriptionType receiver, RemoteSubscription remoteReceiverSubscription)
TransmitterCommunicationInterface
sendReceipt
in interface TransmitterCommunicationInterface
centralTransmitterId
- ID des zentraldatenverteilers, sofern vorhanden. Typischerweise die ID dieses Datenverteilers oder eines nachgelagerten Datenverteilers.state
- Verbindungszustand, siehe ConnectionState
receiver
- Art der Anmeldung Quelle-Empfänger oder Sender-SenkeremoteReceiverSubscription
- Entweder eine RemoteSenderSubscription
oder eine RemoteReceiverSubscription
,
die die zugehörige eingehende Anmeldung von eine manderen Datenverteiler darstellt.