de.bsvrz.dav.dav.main
Class SubscriptionsManager

java.lang.Object
  extended by de.bsvrz.dav.dav.main.SubscriptionsManager

public class SubscriptionsManager
extends Object

Diese Komponente ist für die Verwaltung der Anmeldungen zuständig. Für jede Anmeldung wird ein Repräsentant erzeugt, der in einer Tabelle gehalten wird.

Author:
Kappich Systemberatung

Constructor Summary
SubscriptionsManager()
          Dieser Konstruktor wird für Testzwecke benötigt.
 
Method Summary
 void printSubscriptions()
          Gibt alle Anmeldungen zu Debug-Zwecken aus
 void sendData(T_A_HighLevelCommunication inputApplicationConnection, ApplicationDataTelegram applicationDataTelegram)
          Diese Methode wird von der Protokollsteuerung DaV-DAF aufgerufen, wenn von einer Applikation ein neuer Datensatz empfangen wurde.
 void sendData(T_T_HighLevelCommunication inputTransmitterConnection, TransmitterDataTelegram transmitterDataTelegram)
          Diese Methode wird von der Protokollsteuerung DaV-DaV aufgerufen, wenn von einem Datenverteiler ein neuer Datensatz empfangen wurde.
 void subscribe(SubscriptionComponent subscriptionComponent)
          Anmelden einer Anmeldekomponente
 void unsubscribe(SubscriptionComponent subscriptionComponent)
          Abmelden einer Anmeldekomponente
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SubscriptionsManager

public SubscriptionsManager()
Dieser Konstruktor wird für Testzwecke benötigt.

Method Detail

subscribe

public void subscribe(SubscriptionComponent subscriptionComponent)
Anmelden einer Anmeldekomponente

Parameters:
subscriptionComponent - Die Anmeldekomponente

unsubscribe

public final void unsubscribe(SubscriptionComponent subscriptionComponent)
Abmelden einer Anmeldekomponente

Parameters:
subscriptionComponent - Die Anmeldekomponente

sendData

public void sendData(T_A_HighLevelCommunication inputApplicationConnection,
                     ApplicationDataTelegram applicationDataTelegram)
Diese Methode wird von der Protokollsteuerung DaV-DAF aufgerufen, wenn von einer Applikation ein neuer Datensatz empfangen wurde. Zuerst wird überprüft ob dieser Datenverteiler der Zentraldatenverteiler der Datensätze, d. h., ob die Quelle oder Senke der Datensätze bei diesen Datenverteiler angemeldet ist. Ist dies nicht der Fall, so wird überprüft, ob ein positiv quittierter Anmeldungsvermerk für einen Sender vorhanden ist. In diesem Fall wird der Datensatz mit der ID des Senders versehen und dem zum Datenverteiler weitergeleitet, bei dem eine positiv quittierte Folgeanmeldung vorliegt. Erst der Zentraldatenverteiler sorgt für einen gültigen, eindeutigen Datensatzindex. Bis zu diesem Zeitpunkt muss der Sender eindeutig benannt werden. Dies ist gerade dann notwendig, wenn mehrere Sender ihre Datensätze über einen Datenverteiler im System verteilen und die Telegramme zerstückelt sind. Wenn dieser Datenverteiler der Zentraldatenverteiler für diese Datensätze ist, wird überprüft ob der Datensatz zerstückelt ist. In diesem Fall wird der Datensatzindex dieses Datensatzes bestimmt und an die Applikationen und Datenverteiler weitergeleitet, die positiv quittierte Anmeldungen initiiert haben. Wenn der Datensatz kein nachgelieferter Datensatz ist, wird er in der Datenbestand aufgenommen. Für den Fall das der Datensatz zerstückelt ist gibt es zwei Möglichkeiten: Der Datensatzindex wird so gebildet, dass die oberen 32 Bits die Zeit und die unteren 30 Bits den um eins erhöhten Index der Basisanmeldeinformation enthalten. Die Zeit wird entweder aus dem Datensatzindex des im Datenbestand vorhandenen Datensatzes gewonnen oder ist die Zeit des Startens dieses Datenverteilers. Für jede Basisanmeldeinformation wird ein Index in einer Tabelle eingerichtet, der bei jedem neuen Datensatz um eins erhöht wird und in der Tabelle wieder abgespeichert wird. Wenn ein Telegramm an eine Applikation weitergeleitet wird, muss überprüft werden, ob sich die Applikation evtl. nur für Delta-Daten oder für einen Teil der Attribute (oder beides) angemeldet hat. Wenn keine Einschränkung vorliegt, wird das Telegramm an die Applikation weitergeleitet. Bei Einschränkungen hingegen wird zunächst gewartet, bis der Datensatz komplett verfügbar ist (Zerstückelung). Je nachdem, welche Einschränkungen vorliegen, wird der Datensatz wie folgt an die Applikation weitergeleitet: Das Senden eines Datensatzes wird natürlich nur dann erfolgen, wenn der Empfänger be- rechtigt ist, die Daten zu empfangen. Andernfalls wird ein spezieller Datensatz generiert, welcher den Empfänger darüber informiert, dass er keine Berechtigung hat.

Parameters:
inputApplicationConnection - Verbindung
applicationDataTelegram - Applikations-Daten-Telegramm

sendData

public final void sendData(T_T_HighLevelCommunication inputTransmitterConnection,
                           TransmitterDataTelegram transmitterDataTelegram)
Diese Methode wird von der Protokollsteuerung DaV-DaV aufgerufen, wenn von einem Datenverteiler ein neuer Datensatz empfangen wurde. Der Datensatzindex wird so gebildet, dass die oberen 32 Bits die Zeit und die unteren 30 Bits den um eins erhöhten Index der Basisanmeldeinformation enthalten. Die Zeit wird entweder aus dem Datensatzindex des im Datenbestand vorhandenen Datensatzes gewonnen oder ist die Zeit des Startens dieses Datenverteilers. Für jede Basisanmeldeinformation wird ein Index in einer Tabelle eingerichtet, der bei jedem neuen Datensatz um eins erhöht wird und in der Tabelle wieder abgespeichert wird. Wenn ein Telegramm an eine Applikation weitergeleitet wird, muss überprüft werden, ob sich die Applikation evtl. nur für Delta-Daten oder für einen Teil der Attribute (oder beides) angemeldet hat. Wenn keine Einschränkung vorliegt, wird das Telegramm an die Applikation weitergeleitet. Bei Einschränkungen hingegen wird zunächst gewartet, bis der Datensatz komplett verfügbar ist (Zerstückelung). Je nachdem, welche Einschränkungen vorliegen, wird der Datensatz wie folgt an die Applikation weitergeleitet: Das Senden eines Datensatzes wird natürlich nur dann erfolgen, wenn der Empfänger berechtigt ist, die Daten zu empfangen. Andernfalls wird ein spezieller Datensatz generiert, welcher den Empfänger darüber informiert, dass er keine Berechtigung hat.

Parameters:
inputTransmitterConnection - Verbindung
transmitterDataTelegram - Transmitter-Daten-Telegramm

printSubscriptions

public void printSubscriptions()
Gibt alle Anmeldungen zu Debug-Zwecken aus