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.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
HighLevelTransmitterManager
public HighLevelTransmitterManager(HighLevelConnectionsManagerInterface connectionsManager, ListsManager listsManager)
-
-
Method Details
-
getMyTransmitterId
public long getMyTransmitterId() -
connectionTerminated
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
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
-