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 AccessControlPlugin
s 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)
TelegramManagerTransactionInterface
Sendet ein Telegram. Wird vom DavTransactionManager benutzt, um manuell Telegramme mit einem vorgegebenen Datenindex zu senden.
sendTelegramsFromTransaction
in interface TelegramManagerTransactionInterface
isSource
- 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 TelegramManagerTransactionInterface
info
- 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)