|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectde.bsvrz.dav.daf.main.impl.SubscriptionManager
public class SubscriptionManager
Verwaltung der Sende- und Empfangsanmeldungen der Datenverteiler-Applikationsfunktionen
Diese interne Subkomponente SubscriptionManager ist für die An und Abmeldungen zuständig. Sie startet beim Aufruf die notwendigen Anmeldungen für die gerichtete Kommunikation zwischen Applikation und Konfiguration oder Archiv. Sie bietet Methoden, um Anmeldungen und Abmeldungen, als Empfänger, Senke, Sender oder Quelle, über die Protokollsteuerung DaVDAF, beim Datenverteiler durchzuführen. Die Anmeldungen werden hier verwaltet, so dass keine doppelten Anmeldungen der gleichen Daten beim Datenverteiler existieren. Weiterhin bietet sie Methoden, um Daten, über die Protokollsteuerung DaV-DAF, zum Datenverteiler zu senden. Die zu sendenden Datensätze werden mit dem passenden Datensatzindex2 versehen (alter Datensatzindex + 1). Falls eine Empfangsanmeldung auch Archivdaten verlangt, werden die Anfrage aktueller Daten und die Archivanfrage so gesteuert, dass keine Lücken entstehen. Sie wird vom Cache-Manager benachrichtigt, falls neue Daten angekommen sind. Diese werden dann in eine Tabelle eingefügt. Diese wird von einem Aktualisierungsthread zyklisch entleert, und die Daten werden an den Interessenten weitergeleitet. Durch die zyklische en-bloc- Bearbeitung der in der Tabelle aufgelaufenen Daten erreicht man eine bessere Durchsatzrate im Vergleich zur Einzelbearbeitung der Datensätze. Alle Sende und Empfangsanmeldungen werden in entsprechenden Hashtables gespeichert. Ein Thread leitet empfangene Telegramme an die entsprechenden angemeldeten Empfänger weiter.
Nested Class Summary | |
---|---|
(package private) class |
SubscriptionManager.DataDeliveryThread
|
Field Summary | |
---|---|
private long |
_applicationId
Die Id der Applikation |
private CacheManager |
_cacheManager
Der Cachemanager |
private ConfigurationManager |
_configurationManager
Der Konfigurationsmanager |
private boolean |
_configurationReadRequestConfirmed
Signalisiert, dass die Konfigurationsanfrage zum Lesen vom Datenverteiler bestätigt wurde |
private boolean |
_configurationWriteRequestConfirmed
Signalisiert, dass die Konfigurationsanfrage zum Schreiben vom Datenverteiler bestätigt wurde |
private ClientDavParameters |
_dafParameters
Die Parameter der Datenverteiler-Applikationsfunktionen |
private SubscriptionManager.DataDeliveryThread |
_dataDeliveryThread
Der Thread, der empfangene Datensätze an die angemeldeten Empfänger weiterleitet. |
private static Debug |
_debug
Debuglogger |
private ClientHighLevelCommunication |
_highLevelCommunication
Die höhere Ebene der Kommunikation |
private boolean |
_initialisationComplete
Signalisiert, dass die Initialisierung fertig ist |
private long |
_localConfigurationId
Der ID des lokalen Konfigurationsverantwortlichen |
private CollectingReceiverManager |
_receiverManager
Verwaltung der angemeldeten Receiver |
private Hashtable |
_receiverObjectTable
Eine Tabelle wo die Empfangsanmeldungen und deren Informationen gehalten werden |
private Hashtable |
_senderObjectTable
Eine Tabelle wo die Sendeanmeldungen und deren Informationen gehalten werden |
Constructor Summary | |
---|---|
SubscriptionManager(ClientDavParameters dafParameters)
|
Method Summary | |
---|---|
(package private) void |
actualDataUpdate(CachedObject cachedObject)
Diese Methode wird von Cache-Manager aufgerufen, wenn aktuelle Daten empfangen wurden. |
private boolean |
checkATGUsage(DataDescription dataDescription,
ReceiverRole receiverRole)
Prüft, ob eine Anmeldung als Senke/Empfänger laut der benutzten ATG-Verwendung erlaubt ist. |
private boolean |
checkATGUsage(DataDescription dataDescription,
SenderRole senderRole)
|
void |
close()
Schließt diese Subkomponente und terminiert den Aktualisierungsthread. |
void |
completeInitialisation()
Initialisierung der Anmeldungsverwaltung. |
ClientHighLevelCommunication |
getHighLevelCommunication()
Bestimmt die Kommunikationsschicht von der der SubscriptionManager abhängig ist |
(package private) long |
getSendDataIndex(BaseSubscriptionInfo info)
Gibt der Index der Sendung der gegebene Anmeldungsinformation zurück. |
(package private) long |
getTimeInCache(BaseSubscriptionInfo info)
Gibt die Verweilzeit eines Datums im Cache zurück |
boolean |
isInitialisationComplete()
Überprüft, ob die notwendigen Anmeldungen einer gerichtete Kommunikation durch die Konfiguration erfolgt sind oder nicht. |
private boolean |
isOnlineUsage(AttributeGroupUsage.Usage usage)
Prüft ob es sich um eine Anmeldung auf Onlinedaten handelt. |
void |
notifySenderApplication(BaseSubscriptionInfo info,
byte state)
Wenn eine Sendeanmeldung mit aktivierter Benachrichtigungsoption vorliegt, dann wird ihr über diese Methode mitgeteilt, welche Aktion von ihr durchzuführen ist. |
void |
sendData(ResultData result)
Sendet einen Ergebnisdatensatz zum Datenverteiler. |
(package private) void |
sendData(SendDataObject sendData)
Sendet eine Konfigurationsanfrage zum Datenverteiler. |
(package private) void |
setCacheManager(CacheManager cacheManager)
Setzt den CacheManager dieser Subkomponente. |
(package private) void |
setConfigurationManager(ConfigurationManager configurationManager)
Setzt den ConfigurationManager dieser Subkomponente und benachrichtigt die Protokollsteuerung DaV-DAF über die Bereitschaft, Konfigurationsdaten zu empfangen. |
void |
setHighLevelCommunication(ClientHighLevelCommunication highLevelCommunication)
Setzt die ClientHighLevelCommunication-Subkomponente um Anmeldungen, Abmeldungen und Datensätze an den Datenverteiler weiterzuleiten. |
void |
subscribeReceiver(ClientReceiverInterface receiver,
SystemObject[] objects,
DataDescription dataDescription,
ReceiveOptions options,
ReceiverRole role,
long cacheTime)
Anmeldung zum Empfangen von Daten. |
private void |
subscribeReceiver(ReceiverSubscription receiverSubscription)
Anmeldung zum Empfangen von Daten für eine Datenidentifikation. |
void |
subscribeSender(ClientSenderInterface sender,
SystemObject[] objects,
DataDescription dataDescription,
SenderRole role)
Anmeldung zum Senden von Daten. |
private Aspect |
substituteToAspect(AttributeGroup attributeGroup,
Aspect aspect)
Realisiert eine Aspektumleitung, sofern dies über entsprechende Aufrufargumente der Applikation vorgegeben wurde. |
void |
unsubscribeReceiver(ClientReceiverInterface receiver,
SystemObject[] objects,
DataDescription dataDescription)
Abmeldung von angemeldeten Daten. |
void |
unsubscribeSender(ClientSenderInterface sender,
SystemObject[] objects,
DataDescription dataDescription)
Abmeldung von angemeldeten Daten. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final Debug _debug
private Hashtable _senderObjectTable
private Hashtable _receiverObjectTable
private CacheManager _cacheManager
private ConfigurationManager _configurationManager
private ClientHighLevelCommunication _highLevelCommunication
private ClientDavParameters _dafParameters
private long _applicationId
private long _localConfigurationId
private boolean _initialisationComplete
private boolean _configurationReadRequestConfirmed
private boolean _configurationWriteRequestConfirmed
private SubscriptionManager.DataDeliveryThread _dataDeliveryThread
private CollectingReceiverManager _receiverManager
Constructor Detail |
---|
public SubscriptionManager(ClientDavParameters dafParameters)
dafParameters
- Startparameter der VerbindungMethod Detail |
---|
public final void setHighLevelCommunication(ClientHighLevelCommunication highLevelCommunication)
highLevelCommunication
- Referenz auf die zu setzende Kommunikationsschichtpublic final ClientHighLevelCommunication getHighLevelCommunication()
public final void completeInitialisation()
public final boolean isInitialisationComplete()
final void setCacheManager(CacheManager cacheManager)
cacheManager
- Referenz auf den zu setzenden Cachemanagerfinal void setConfigurationManager(ConfigurationManager configurationManager)
configurationManager
- Referenz auf den zu setzenden Konfigurationsmanagerprivate final Aspect substituteToAspect(AttributeGroup attributeGroup, Aspect aspect)
attributeGroup
- Umzuleitende Attributgruppe.aspect
- Ersetzer Aspekt.
private final void subscribeReceiver(ReceiverSubscription receiverSubscription) throws DataNotSubscribedException
receiverSubscription
- Anmeldeinformationen
DataNotSubscribedException
public final void subscribeReceiver(ClientReceiverInterface receiver, SystemObject[] objects, DataDescription dataDescription, ReceiveOptions options, ReceiverRole role, long cacheTime)
receiver
- Ein von der Applikation bereitzustellendes Objekt, das bei Aktualisierungen entsprechende Methodenaufrufe erhält.objects
- Liste mit System-Objekten für die die spezifizierten Daten anzumelden sind.dataDescription
- Beschreibende Informationen zu den anzumeldenden Daten.options
- Für die Anmeldung zu verwendende Optionen.role
- Für die Anmeldung zu verwendende Rolle (Empfänger oder Senke).cacheTime
- Vorhaltezeitraum in Millisekunden. Der Vorhaltezeitraum spezifiziert, wie lange empfangene Daten zwischengespeichert werden sollen.
IllegalArgumentException
- Die angegebene ReceiverRole verstößt gegen die Attributgruppenverwendung.private boolean checkATGUsage(DataDescription dataDescription, ReceiverRole receiverRole)
dataDescription
- Datenidentifikation, mit der angemeldet werden soll.receiverRole
- Rolle, mit der angemeldet werden soll.
IllegalArgumentException
- Es sollen Konfigurationsdaten angemeldet werden. Dies ist immer verboten.private boolean checkATGUsage(DataDescription dataDescription, SenderRole senderRole)
private boolean isOnlineUsage(AttributeGroupUsage.Usage usage)
usage
- Verwendete ATG-Usage
AttributeGroupUsage.Usage#OnlineDataAsSenderDrain
,
AttributeGroupUsage.Usage#OnlineDataAsSourceReceiver
,
AttributeGroupUsage.Usage#OnlineDataAsSourceReceiverOrSenderDrain
public final void unsubscribeReceiver(ClientReceiverInterface receiver, SystemObject[] objects, DataDescription dataDescription)
subscribeReceiver(de.bsvrz.dav.daf.main.impl.subscription.ReceiverSubscription)
durchgeführte Empfangsanmeldung wieder rückgängig.
receiver
- Das Anwendungsobjekt, das bei der Anmeldung benutzt wurde.objects
- Feld mit System-Objekten für die die spezifizierten Daten abzumelden sind.dataDescription
- Beschreibende Informationen zu den abzumeldenden Daten.public final void subscribeSender(ClientSenderInterface sender, SystemObject[] objects, DataDescription dataDescription, SenderRole role) throws OneSubscriptionPerSendData
sender
- Applikationsobjekt zur Verarbeitung von Sendesteuerungenobjects
- Feld mit System-Objekten für die spezifizierten Daten anzumelden sind.dataDescription
- Beschreibende Informationen zu den anzumeldenden Daten.role
- Für die Anmeldung zu verwendende Rolle (Quelle oder Sender).
IllegalArgumentException
- Die SenderRole verstößt gegen die Attributgruppenverwendung
OneSubscriptionPerSendData
- Wenn bereits eine lokale Sendeanmeldung für diese Datenidentifikation vorhanden istpublic final void unsubscribeSender(ClientSenderInterface sender, SystemObject[] objects, DataDescription dataDescription)
subscribeSender(de.bsvrz.dav.daf.main.ClientSenderInterface, de.bsvrz.dav.daf.main.config.SystemObject[], de.bsvrz.dav.daf.main.DataDescription, de.bsvrz.dav.daf.main.SenderRole)
durchgeführte Sendeanmeldung wieder rückgängig.
sender
- Das Anwendungsobjekt, das bei der Anmeldung benutzt wurde.objects
- Feld mit System-Objekten für die die spezifizierten Daten abzumelden sind.dataDescription
- Beschreibende Informationen zu den abzumeldenden Daten.final void sendData(SendDataObject sendData) throws DataNotSubscribedException
sendData
- Zu sendender Datensatz.
DataNotSubscribedException
- Wenn die Daten nicht zum Senden angemeldet waren.public final void sendData(ResultData result) throws DataNotSubscribedException, SendSubscriptionNotConfirmed
result
- Ergebnis mit dem zu sendenden Datensatz.
DataNotSubscribedException
- Wenn die Daten nicht zum Senden angemeldet waren.
SendSubscriptionNotConfirmed
- Wenn die Sendesteuerung abgewartet werden muss, bevor gesendet werden kann.public void notifySenderApplication(BaseSubscriptionInfo info, byte state)
info
- Anmeldeinfo, auf die sich die Sendesteuerung beziehtstate
- Zustand der Sendesteuerunglong getTimeInCache(BaseSubscriptionInfo info)
info
- Anmeldeinfo, zu der die Verweilzeit bestimmt werden soll.
void actualDataUpdate(CachedObject cachedObject) throws InterruptedException
cachedObject
- Empfangener Datensatz.
InterruptedException
- Wenn der Thread während eines blockierenden Aufrufs unterbrochen wurdefinal long getSendDataIndex(BaseSubscriptionInfo info)
info
- Anmeldeinformationen der Sendung
public final void close()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |