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 java.lang.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
Constructors Constructor Description HighLevelTransmitterManager(HighLevelConnectionsManagerInterface connectionsManager, ListsManager listsManager)
-
Method Summary
Modifier and Type Method Description voidaddWay(T_T_HighLevelCommunication communication)Es gibt einen neuen Weg, diese Nachricht wird im BestWayManager behandelt, siehe Dokumentation dort.voidconnectionTerminated(T_T_HighLevelCommunication communication)Wird bei einem Verbindungsabbruch aufgerufende.bsvrz.dav.daf.communication.srpAuthentication.SrpVerifierAndUserfetchSrpVerifierAndAuthentication(java.lang.String userName)Fragt von der Konfiguration bei einer eingehenden Authentifizierungsanfrage den SRP-Verifier für den angegebenen Benutzer abT_T_HighLevelCommunicationInterfacegetBestConnectionToRemoteDav(long remoteDav)de.bsvrz.dav.daf.main.authentication.ClientCredentialsgetClientCredentialsForAuthentication(long transmitterId)Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll.de.bsvrz.dav.daf.main.authentication.ClientCredentialsgetClientCredentialsForAuthentication(java.lang.String userName, long transmitterId)Bestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler mit dem angegebenen Benutzernamen benutzt werden soll.longgetMyTransmitterId()java.util.List<java.lang.Long>getPotentialCentralDistributors(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)java.lang.StringgetUserNameForAuthentication(long connectedTransmitterId)Bestimmt den Benutzername der zur Authentifizierung beim angegebenen Datenverteiler benutzt werden soll.shortgetWeight(long transmitterId)Gibt das Gewicht einer Verbindung zurückvoidhandleDataTelegram(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataTelegram transmitterDataTelegram)Wird aufgerufen, wenn ein Datentelegramm eintrifftvoidhandleListsDeliveryUnsubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsDeliveryUnsubscription transmitterListsDeliveryUnsubscription)Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoidhandleListsSubscription(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsSubscription transmitterListsSubscription)Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoidhandleListsUnsubscription(ServerHighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUnsubscription transmitterListsUnsubscription)Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoidhandleListsUpdate(de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterListsUpdate transmitterListsUpdate)Dieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dortvoidhandleTransmitterSubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscription subscription)Eingehende DatenanmeldungvoidhandleTransmitterSubscriptionReceipt(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataSubscriptionReceipt receipt)Bestätigung einer ausgehenden Datenanmeldung auf einem entfernten datenverteilervoidhandleTransmitterUnsubscription(T_T_HighLevelCommunicationInterface communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterDataUnsubscription unsubscription)Eingehende DatenabmeldungvoidthrottleLoginAttempt(boolean passwordWasCorrect)Wird bei jedem Login-Versuch aufgerufen und sorgt dafür, dass bei wiederholten Brute-Force-Angriffen der Login verzögert wird.voidupdateBestWay(T_T_HighLevelCommunication communication, de.bsvrz.dav.daf.communication.lowLevel.telegrams.TransmitterBestWayUpdate transmitterBestWayUpdate)Wird bei einem BestWayUpdate-Telegramm aufgerufenvoidupdateDestinationRoute(long transmitterId, RoutingConnectionInterface oldConnection, RoutingConnectionInterface newConnection)Wird aufgerufen, wenn die Kommunikation zu einem anderen Datenverteiler über eine andere Verbindung erfolgen sollte.
-
-
-
Constructor Detail
-
HighLevelTransmitterManager
public HighLevelTransmitterManager(HighLevelConnectionsManagerInterface connectionsManager, ListsManager listsManager)
-
-
Method Detail
-
getMyTransmitterId
public long getMyTransmitterId()
-
connectionTerminated
public void connectionTerminated(T_T_HighLevelCommunication communication)
Description copied from interface:HighLevelTransmitterManagerInterfaceWird bei einem Verbindungsabbruch aufgerufen- Specified by:
connectionTerminatedin interfaceHighLevelTransmitterManagerInterface
-
getUserNameForAuthentication
public java.lang.String getUserNameForAuthentication(long connectedTransmitterId)
Description copied from interface:HighLevelTransmitterManagerInterfaceBestimmt 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:
getUserNameForAuthenticationin 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:HighLevelTransmitterManagerInterfaceBestimmt 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:
getClientCredentialsForAuthenticationin 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(java.lang.String userName, long transmitterId)Description copied from interface:HighLevelTransmitterManagerInterfaceBestimmt das Benutzerpasswort das zur Authentifizierung beim angegebenen Datenverteiler mit dem angegebenen Benutzernamen benutzt werden soll.- Specified by:
getClientCredentialsForAuthenticationin 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:HighLevelTransmitterManagerInterfaceGibt das Gewicht einer Verbindung zurück- Specified by:
getWeightin 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:HighLevelTransmitterManagerInterfaceWird aufgerufen, wenn ein Datentelegramm eintrifft- Specified by:
handleDataTelegramin 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:HighLevelTransmitterManagerInterfaceDieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsUpdatein 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:HighLevelTransmitterManagerInterfaceDieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsDeliveryUnsubscriptionin 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:HighLevelTransmitterManagerInterfaceDieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsUnsubscriptionin 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:HighLevelTransmitterManagerInterfaceDieses Telegramm wird an den ListsManager weitergegeben, siehe Dokumentation dort- Specified by:
handleListsSubscriptionin 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:HighLevelTransmitterManagerInterfaceEingehende Datenanmeldung- Specified by:
handleTransmitterSubscriptionin 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:HighLevelTransmitterManagerInterfaceEingehende Datenabmeldung- Specified by:
handleTransmitterUnsubscriptionin 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:HighLevelTransmitterManagerInterfaceBestätigung einer ausgehenden Datenanmeldung auf einem entfernten datenverteiler- Specified by:
handleTransmitterSubscriptionReceiptin interfaceHighLevelTransmitterManagerInterface- Parameters:
communication- Verbindungreceipt- Telegram
-
addWay
public void addWay(T_T_HighLevelCommunication communication)
Description copied from interface:HighLevelTransmitterManagerInterfaceEs gibt einen neuen Weg, diese Nachricht wird im BestWayManager behandelt, siehe Dokumentation dort.- Specified by:
addWayin 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:HighLevelTransmitterManagerInterfaceWird bei einem BestWayUpdate-Telegramm aufgerufen- Specified by:
updateBestWayin interfaceHighLevelTransmitterManagerInterface- Parameters:
communication- Verbindung über die das Telegram gesendet wurdetransmitterBestWayUpdate- Telegramm
-
throttleLoginAttempt
public void throttleLoginAttempt(boolean passwordWasCorrect)
Description copied from interface:HighLevelTransmitterManagerInterfaceWird bei jedem Login-Versuch aufgerufen und sorgt dafür, dass bei wiederholten Brute-Force-Angriffen der Login verzögert wird.- Specified by:
throttleLoginAttemptin 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(java.lang.String userName) throws de.bsvrz.dav.daf.communication.srpAuthentication.SrpNotSupportedExceptionDescription copied from interface:HighLevelTransmitterManagerInterfaceFragt von der Konfiguration bei einer eingehenden Authentifizierungsanfrage den SRP-Verifier für den angegebenen Benutzer ab- Specified by:
fetchSrpVerifierAndAuthenticationin 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:DistributionInterfaceWird aufgerufen, wenn die Kommunikation zu einem anderen Datenverteiler über eine andere Verbindung erfolgen sollte.- Specified by:
updateDestinationRoutein 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
public java.util.List<java.lang.Long> getPotentialCentralDistributors(de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
-
getBestConnectionToRemoteDav
public T_T_HighLevelCommunicationInterface getBestConnectionToRemoteDav(long remoteDav)
-
-