public class TelegramManager extends java.lang.Object implements TelegramManagerTransactionInterface
Diese Klasse verarbeitet ankommende Datentelegramme, prüft ob der Absender erlaubt war die Daten zu verschicken (Anmeldung gültig), wendet eventuelle AccessControlPlugins auf die Telegramme an und gibt sie dann an das passende SubscriptionInfo-Objekt weiter, welches die Telegramme an interessierte Empfänger weiterleitet.
| Modifier and Type | Field and Description |
|---|---|
private java.util.Collection<AccessControlPlugin> |
_accessControlPlugins
Liste mit Plugins, die den Datenverkehr abfangen und filtern um die Zugriffsrechte zu prüfen
|
private boolean |
_accessControlPluginsInitialized |
private HighLevelConnectionsManagerInterface |
_connectionsManager |
private DavDavRequester |
_davDavRequester |
private DavTransactionManager |
_davTransactionManager |
private static Debug |
_debug |
private TelegramAggregator<ApplicationDataTelegram> |
_localTelegramAggregator |
private java.util.Map<java.lang.Long,java.util.List<AccessControlPlugin>> |
_pluginFilterMap |
private boolean |
_pluginFilterMapInitialized |
private SelfClientDavConnection |
_selfClientDavConnection |
private HighLevelSubscriptionsManager |
_subscriptionsManager |
private ServerDavParameters.UserRightsChecking |
_userRightsChecking |
| Constructor and Description |
|---|
TelegramManager(HighLevelConnectionsManagerInterface connectionsManager,
ServerDavParameters.UserRightsChecking userRightsChecking)
Erstellt einen neuen TelegramManager
|
| Modifier and Type | Method and Description |
|---|---|
static byte[] |
convertTelegramsToBytes(java.util.List<ApplicationDataTelegram> telegrams) |
static void |
dumpTelegrams(java.util.List<ApplicationDataTelegram> telegrams,
DafDataModel dataModel) |
HighLevelConnectionsManagerInterface |
getConnectionsManager() |
long |
getNextDataIndex(BaseSubscriptionInfo info)
Berechnet für eine Anmeldung den nächsten Datenindex und gibt diesen zurück
|
java.util.Map<java.lang.Long,java.util.List<AccessControlPlugin>> |
getPluginFilterMap()
Gibt eine Map zurück, die als Key die AttributeGroupUsage-ID speichert und als Value alle zuständigen Plugins in einer Liste enthält
|
HighLevelSubscriptionsManager |
getSubscriptionsManager() |
void |
handleDataTelegram(CommunicationInterface communication,
ApplicationDataTelegram applicationDataTelegram,
boolean toCentralDistributor)
Verarbeitet ein eingehendes Datentelegram
|
void |
handleDataTelegram(CommunicationInterface communication,
TransmitterDataTelegram transmitterDataTelegram)
Verarbeitet ein eingehendes Datentelegram von einem anderen Datenverteiler
|
private void |
handleTelegramsAsCentralDistributor(java.util.List<ApplicationDataTelegram> telegrams,
SubscriptionInfo subscriptionInfo,
CommunicationInterface communication)
Verarbeitet Datentelegramem als Zentraldatenverteiler
|
private void |
initializeAccessControlPlugins(java.lang.Iterable<java.lang.String> accessControlPlugins)
Initialisiert die angegebenen Zugriffssteuerungs-Plugins, die den Datenverkehr filtern und so zusätzliche Rechteprüfungen vornehmen können
|
void |
notifyIsNewCentralDistributor(BaseSubscriptionInfo baseSubscriptionInfo) |
void |
notifySubscriptionRemoved(LocalReceivingSubscription receivingSubscription)
Benachrichtigt den _davTransactionManager dass eine lokale Anmeldung nicht mehr vorhanden ist.
|
void |
notifySubscriptionRemoved(LocalSendingSubscription sendingSubscription)
Benachrichtigt den _davTransactionManager dass eine lokale Anmeldung nicht mehr vorhanden ist.
|
void |
notifyWasCentralDistributor(BaseSubscriptionInfo baseSubscriptionInfo) |
void |
sendTelegramsFromTransaction(boolean isSource,
ApplicationDataTelegram[] dataTelegrams)
Sendet ein Telegram.
|
void |
setConfigurationAvailable(SelfClientDavConnection selfClientDavConnection,
ApplicationStatusUpdater applicationStatusUpdater)
Initialisiert Funktionen, die von der Konfiguration abhängen (z.B.
|
private static final Debug _debug
private final HighLevelSubscriptionsManager _subscriptionsManager
private final HighLevelConnectionsManagerInterface _connectionsManager
private final TelegramAggregator<ApplicationDataTelegram> _localTelegramAggregator
private SelfClientDavConnection _selfClientDavConnection
private DavTransactionManager _davTransactionManager
private DavDavRequester _davDavRequester
private final ServerDavParameters.UserRightsChecking _userRightsChecking
private final java.util.Collection<AccessControlPlugin> _accessControlPlugins
Liste mit Plugins, die den Datenverkehr abfangen und filtern um die Zugriffsrechte zu prüfen
private java.util.Map<java.lang.Long,java.util.List<AccessControlPlugin>> _pluginFilterMap
private volatile boolean _accessControlPluginsInitialized
private volatile boolean _pluginFilterMapInitialized
public TelegramManager(HighLevelConnectionsManagerInterface connectionsManager, ServerDavParameters.UserRightsChecking userRightsChecking)
Erstellt einen neuen TelegramManager
connectionsManager - VerbindungsverwaltunguserRightsChecking - Welche Art von Rechteprüfung durchgeführt werden sollpublic void setConfigurationAvailable(SelfClientDavConnection selfClientDavConnection, ApplicationStatusUpdater applicationStatusUpdater)
Initialisiert Funktionen, die von der Konfiguration abhängen (z.B. Rechteprüfung)
selfClientDavConnection - eigene Datenverteiler-VerbindungapplicationStatusUpdater - Klasse, die angemeldete Datensätze verschicktprivate void initializeAccessControlPlugins(java.lang.Iterable<java.lang.String> accessControlPlugins)
Initialisiert die angegebenen Zugriffssteuerungs-Plugins, die den Datenverkehr filtern und so zusätzliche Rechteprüfungen vornehmen können
accessControlPlugins - Liste mit Plugin-Klassen-Namenpublic java.util.Map<java.lang.Long,java.util.List<AccessControlPlugin>> getPluginFilterMap()
Gibt eine Map zurück, die als Key die AttributeGroupUsage-ID speichert und als Value alle zuständigen Plugins in einer Liste enthält
Map<Long, List> (leer falls die Rechteprüfung deaktivert ist).public HighLevelSubscriptionsManager getSubscriptionsManager()
public HighLevelConnectionsManagerInterface getConnectionsManager()
public void handleDataTelegram(CommunicationInterface communication, TransmitterDataTelegram transmitterDataTelegram)
Verarbeitet ein eingehendes Datentelegram von einem anderen Datenverteiler
communication - Verbindung über die das Telegramm eingehttransmitterDataTelegram - Telegrampublic void handleDataTelegram(CommunicationInterface communication, ApplicationDataTelegram applicationDataTelegram, boolean toCentralDistributor)
Verarbeitet ein eingehendes Datentelegram
communication - Verbindung über die das Telegramm eingehtapplicationDataTelegram - TelegramtoCentralDistributor - wenn das Telegramm noch nicht beim Zentraldatenverteiler behandelt wurde, also der Datenindex noch nicht vernünftig gesetzt wurdeprivate void handleTelegramsAsCentralDistributor(java.util.List<ApplicationDataTelegram> telegrams, SubscriptionInfo subscriptionInfo, CommunicationInterface communication)
Verarbeitet Datentelegramem als Zentraldatenverteiler
telegrams - Aggregierte Liste mit zusammengehörigen DatentelegrammensubscriptionInfo - Objekt, das die dazugehörigen Anmeldungen verwaltet und an das die Daten gesendet werden.communication - Verbindung über die der Emfang erfolgt (zur Rechteprüfung)public static void dumpTelegrams(java.util.List<ApplicationDataTelegram> telegrams, DafDataModel dataModel)
public void sendTelegramsFromTransaction(boolean isSource,
ApplicationDataTelegram[] dataTelegrams)
TelegramManagerTransactionInterfaceSendet ein Telegram. Wird vom DavTransactionManager benutzt, um manuell Telegramme mit einem vorgegebenen Datenindex zu senden.
sendTelegramsFromTransaction in interface TelegramManagerTransactionInterfaceisSource - true wenn QuelledataTelegrams - Telegramm (oder mehrere falls gesplittet)public long getNextDataIndex(BaseSubscriptionInfo info)
Berechnet für eine Anmeldung den nächsten Datenindex und gibt diesen zurück
getNextDataIndex in interface TelegramManagerTransactionInterfaceinfo - Anmeldungs-Infopublic void notifySubscriptionRemoved(LocalSendingSubscription sendingSubscription)
Benachrichtigt den _davTransactionManager dass eine lokale Anmeldung nicht mehr vorhanden ist. Der Transaktionsmanager meldet daraufhin eventuell vorhandene innere Datensätze ab.
sendingSubscription - Sender-Anmeldungpublic void notifySubscriptionRemoved(LocalReceivingSubscription receivingSubscription)
Benachrichtigt den _davTransactionManager dass eine lokale Anmeldung nicht mehr vorhanden ist. Der Transaktionsmanager meldet daraufhin eventuell vorhandene innere Datensätze ab.
receivingSubscription - Empfänger-Anmeldungpublic static byte[] convertTelegramsToBytes(java.util.List<ApplicationDataTelegram> telegrams)
public void notifyIsNewCentralDistributor(BaseSubscriptionInfo baseSubscriptionInfo)
public void notifyWasCentralDistributor(BaseSubscriptionInfo baseSubscriptionInfo)