Package de.bsvrz.dav.dav.main
Class HighLevelTransmitterManager
java.lang.Object
de.bsvrz.dav.dav.main.HighLevelTransmitterManager
- All Implemented Interfaces:
DistributionInterface
,HighLevelTransmitterManagerInterface
public class HighLevelTransmitterManager
extends Object
implements DistributionInterface, HighLevelTransmitterManagerInterface
Klasse, die Dav-Dav-Verbindungen verwaltet und Telegramme von T_T-Verbindungen entgegen nimmt und entsprechende Updates bei den verantwortlichen
Klassen auslöst.
-
Constructor Summary
ConstructorsConstructorDescriptionHighLevelTransmitterManager
(HighLevelConnectionsManagerInterface connectionsManager, ListsManager listsManager) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addWay
(T_T_HighLevelCommunication communication) Es gibt einen neuen Weg, diese Nachricht wird im BestWayManager behandelt, siehe Dokumentation dort.void
connectionTerminated
(T_T_HighLevelCommunication communication) Wird bei einem Verbindungsabbruch aufgerufende.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser
fetchSrpVerifierAndAuthentication
(String userName) Fragt von der Konfiguration bei einer eingehenden Authentifizierungsanfrage den SRP-Verifier für den angegebenen Benutzer abgetBestConnectionToRemoteDav
(long remoteDav) de.bsvrz.dav.daf.main.authentication.ClientCredentials
getClientCredentialsForAuthentication
(long transmitterId) Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll.de.bsvrz.dav.daf.main.authentication.ClientCredentials
getClientCredentialsForAuthentication
(String userName, long transmitterId) Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler mit dem angegebenen Benutzernamen benutzt werden soll.long
getPotentialCentralDistributors
(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo) getUserNameForAuthentication
(long connectedTransmitterId) Bestimmt den Benutzername der zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll.short
getWeight
(long transmitterId) Gibt das Gewicht einer Verbindung zurückvoid
handleDataTelegram
(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataTelegram transmitterDataTelegram) Wird aufgerufen, wenn ein Datentelegramm eintrifftvoid
handleListsDeliveryUnsubscription
(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsDeliveryUnsubscription transmitterListsDeliveryUnsubscription) Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoid
handleListsSubscription
(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsSubscription transmitterListsSubscription) Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoid
handleListsUnsubscription
(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUnsubscription transmitterListsUnsubscription) Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoid
handleListsUpdate
(de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUpdate transmitterListsUpdate) Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoid
handleTransmitterSubscription
(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscription subscription) Eingehende Datenanmeldungvoid
handleTransmitterSubscriptionReceipt
(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscriptionReceipt receipt) Bestätigung einer ausgehenden Datenanmeldung auf einem entfernten datenverteilervoid
handleTransmitterUnsubscription
(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataUnsubscription unsubscription) Eingehende Datenabmeldungvoid
throttleLoginAttempt
(boolean passwordWasCorrect) Wird bei jedem Login-Versuch aufgerufen und sorgt dafür, dass bei wiederholten Brute-Force-Angriffen der Login verzögert wird.void
updateBestWay
(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterBestWayUpdate transmitterBestWayUpdate) Wird bei einem BestWayUpdate-Telegramm aufgerufenvoid
updateDestinationRoute
(long transmitterId, RoutingConnectionInterface oldConnection, RoutingConnectionInterface newConnection) Wird aufgerufen, wenn die Kommunikation zu einem anderen Datenverteiler über eine andere Verbindung erfolgen sollte.
-
Constructor Details
-
HighLevelTransmitterManager
public HighLevelTransmitterManager(HighLevelConnectionsManagerInterface connectionsManager, ListsManager listsManager)
-
-
Method Details
-
getMyTransmitterId
public long getMyTransmitterId() -
connectionTerminated
Description copied from interface:HighLevelTransmitterManagerInterface
Wird bei einem Verbindungsabbruch aufgerufen- Specified by:
connectionTerminated
in interfaceHighLevelTransmitterManagerInterface
-
getUserNameForAuthentication
Description copied from interface:HighLevelTransmitterManagerInterface
Bestimmt den Benutzername der zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll. Wenn der Benutzername in der Topologie nicht vorgegeben ist, dann wird der Standardbenutzername des Datenverteilers benutzt.- Specified by:
getUserNameForAuthentication
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
connectedTransmitterId
- Objekt-ID des anderen Datenverteilers.- Returns:
- Benutzername für die Authentifizierung beim anderen Datenverteiler.
-
getClientCredentialsForAuthentication
public de.bsvrz.dav.daf.main.authentication.ClientCredentials getClientCredentialsForAuthentication(long transmitterId) Description copied from interface:HighLevelTransmitterManagerInterface
Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll. Wenn der Benutzername in der Topologie nicht vorgegeben ist, dann wird das Passwort des Standardbenutzers des Datenverteilers zurückgegeben.- Specified by:
getClientCredentialsForAuthentication
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
transmitterId
- Objekt-ID des anderen Datenverteilers.- Returns:
- Passwort für die Authentifizierung beim anderen Datenverteiler.
-
getClientCredentialsForAuthentication
public de.bsvrz.dav.daf.main.authentication.ClientCredentials getClientCredentialsForAuthentication(String userName, long transmitterId) Description copied from interface:HighLevelTransmitterManagerInterface
Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler mit dem angegebenen Benutzernamen benutzt werden soll.- Specified by:
getClientCredentialsForAuthentication
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
userName
- BenutzernametransmitterId
- Objekt-ID des anderen Datenverteilers.- Returns:
- Passwort für die Authentifizierung beim anderen Datenverteiler.
-
getWeight
public short getWeight(long transmitterId) Description copied from interface:HighLevelTransmitterManagerInterface
Gibt das Gewicht einer Verbindung zurück- Specified by:
getWeight
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
transmitterId
- Datenverteiler, zu dem das Gewischt ermittelt werden soll- Returns:
- Gewicht einer Verbindung
-
handleDataTelegram
public void handleDataTelegram(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataTelegram transmitterDataTelegram) Description copied from interface:HighLevelTransmitterManagerInterface
Wird aufgerufen, wenn ein Datentelegramm eintrifft- Specified by:
handleDataTelegram
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram eintriffttransmitterDataTelegram
- Telegram
-
handleListsUpdate
public void handleListsUpdate(de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUpdate transmitterListsUpdate) Description copied from interface:HighLevelTransmitterManagerInterface
Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsUpdate
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
transmitterListsUpdate
- telegram
-
handleListsDeliveryUnsubscription
public void handleListsDeliveryUnsubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsDeliveryUnsubscription transmitterListsDeliveryUnsubscription) Description copied from interface:HighLevelTransmitterManagerInterface
Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsDeliveryUnsubscription
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram gesendet wurdetransmitterListsDeliveryUnsubscription
- telegram
-
handleListsUnsubscription
public void handleListsUnsubscription(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUnsubscription transmitterListsUnsubscription) Description copied from interface:HighLevelTransmitterManagerInterface
Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsUnsubscription
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram gesendet wurdetransmitterListsUnsubscription
- telegram
-
handleListsSubscription
public void handleListsSubscription(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsSubscription transmitterListsSubscription) Description copied from interface:HighLevelTransmitterManagerInterface
Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsSubscription
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram gesendet wurdetransmitterListsSubscription
- telegram
-
handleTransmitterSubscription
public void handleTransmitterSubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscription subscription) Description copied from interface:HighLevelTransmitterManagerInterface
Eingehende Datenanmeldung- Specified by:
handleTransmitterSubscription
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindungsubscription
- Telegram
-
handleTransmitterUnsubscription
public void handleTransmitterUnsubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataUnsubscription unsubscription) Description copied from interface:HighLevelTransmitterManagerInterface
Eingehende Datenabmeldung- Specified by:
handleTransmitterUnsubscription
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindungunsubscription
- Telegram
-
handleTransmitterSubscriptionReceipt
public void handleTransmitterSubscriptionReceipt(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscriptionReceipt receipt) Description copied from interface:HighLevelTransmitterManagerInterface
Bestätigung einer ausgehenden Datenanmeldung auf einem entfernten datenverteiler- Specified by:
handleTransmitterSubscriptionReceipt
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindungreceipt
- Telegram
-
addWay
Description copied from interface:HighLevelTransmitterManagerInterface
Es gibt einen neuen Weg, diese Nachricht wird im BestWayManager behandelt, siehe Dokumentation dort.- Specified by:
addWay
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram gesendet wurde
-
updateBestWay
public void updateBestWay(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterBestWayUpdate transmitterBestWayUpdate) Description copied from interface:HighLevelTransmitterManagerInterface
Wird bei einem BestWayUpdate-Telegramm aufgerufen- Specified by:
updateBestWay
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
communication
- Verbindung über die das Telegram gesendet wurdetransmitterBestWayUpdate
- Telegramm
-
throttleLoginAttempt
public void throttleLoginAttempt(boolean passwordWasCorrect) Description copied from interface:HighLevelTransmitterManagerInterface
Wird bei jedem Login-Versuch aufgerufen und sorgt dafür, dass bei wiederholten Brute-Force-Angriffen der Login verzögert wird.- Specified by:
throttleLoginAttempt
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
passwordWasCorrect
- War das Passwort korrekt? Ausgebremst wird zwar immer, aber nur wenn das passwort falsch war, hat das eine Auswirkung auf folgende Login-Vesuche
-
fetchSrpVerifierAndAuthentication
public de.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUser fetchSrpVerifierAndAuthentication(String userName) throws de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException Description copied from interface:HighLevelTransmitterManagerInterface
Fragt von der Konfiguration bei einer eingehenden Authentifizierungsanfrage den SRP-Verifier für den angegebenen Benutzer ab- Specified by:
fetchSrpVerifierAndAuthentication
in interfaceHighLevelTransmitterManagerInterface
- Parameters:
userName
- Benutzername- Returns:
- SRP-Überprüfugnscode
- Throws:
de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedException
-
updateDestinationRoute
public void updateDestinationRoute(long transmitterId, RoutingConnectionInterface oldConnection, RoutingConnectionInterface newConnection) Description copied from interface:DistributionInterface
Wird aufgerufen, wenn die Kommunikation zu einem anderen Datenverteiler über eine andere Verbindung erfolgen sollte.- Specified by:
updateDestinationRoute
in interfaceDistributionInterface
- Parameters:
transmitterId
- ID des betroffenen Datenverteilers.oldConnection
- Verbindung über die bisher mit dem betroffenen Datenverteiler kommuniziert wurde.newConnection
- Verbindung über die in Zukunft mit dem betroffenen Datenverteiler kommuniziert werden soll.
-
getPotentialCentralDistributors
-
getBestConnectionToRemoteDav
-