public class DavTransactionManager
extends java.lang.Object
Klasse, die Transaktionen auf Dav-Seite verwaltet (Anmeldungen und Abmeldungen der inneren Datenidentifikationen, Einfügen von DataIndizes in innere Datensätze)
Modifier and Type | Class and Description |
---|---|
private class |
DavTransactionManager.ClientSubscriptionInformation
Objekt dass die Anmeldeinformation für Transaktionssenken/quellen vom Client kapselt
|
private class |
DavTransactionManager.InnerTransactionDataReceiver
Wird benutzt um sich als Senke auf einen inneren Datensatz einer Transaktions-Senke anzumelden.
|
private static class |
DavTransactionManager.InnerTransactionDataSender
Sender macht nichts relevates, Sendersteuerung interessiert nicht, da die Daten ohnehin manuell gesendet werden.
|
(package private) class |
DavTransactionManager.Subscription
Kapselt eine Datenanmeldungs-Beschreibung
|
Modifier and Type | Field and Description |
---|---|
private ClientDavConnection |
_connection |
private static Debug |
_debug |
private boolean |
_disabled |
private java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> |
_drainSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Senken
|
private java.util.Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataReceiver> |
_myOwnDataDrains |
private java.util.Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataSender> |
_myOwnDataSources |
private java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> |
_sourceSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Quellen
|
private TelegramManagerTransactionInterface |
_telegramManager |
private java.util.Map<java.lang.Long,AttributeGroupUsage> |
_transactionAttributeGroupUsages |
Constructor and Description |
---|
DavTransactionManager(ClientDavConnection connection,
TelegramManagerTransactionInterface telegramManager)
Erstellt einen neuen DavTransactionManager
|
Modifier and Type | Method and Description |
---|---|
private void |
addSubscription(java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> subscriptionListMap,
DavTransactionManager.Subscription transactionSubscription,
java.util.List<DavTransactionManager.Subscription> innerSubscriptions)
Fügt entweder den Quell oder den Senken-Anmeldungen eine Transaktions-Anmeldung hinzu
|
private TransmitterDataTelegram[] |
applicationTelegramsToTransmitterTelegrams(ApplicationDataTelegram[] applicationDataTelegrams)
Hilfsfunktion, die ein ApplicationDataTelegram-Array in ein TransmitterDataTelegram-Array umwandelt
|
private static ApplicationDataTelegram[] |
createTelegramsFromBytes(byte[] bytes,
BaseSubscriptionInfo baseSubscriptionInfo,
boolean delayedDataFlag,
long dataIndex,
long dataTime,
byte errorFlag,
byte[] attributesIndicator)
Erstellt aus Daten-Bytes ein ApplicationDataTelegram-Array
|
private static ApplicationDataTelegram[] |
dataToTelegrams(SendDataObject sendDataObject,
Data data)
Hinfsfunktion, die ein Data-Objekt in Telgramme zerlegt.
|
private DavTransactionManager.ClientSubscriptionInformation |
deserializeSubscriptionBytes(byte[] bytes)
Hilfsfunktion, die das Bytearray, was vom Client kommt und die Anmeldedaten für eine Transaktion enthält, deserialisiert
|
private void |
handleDataset(Data dataset,
short simulationVariant,
boolean isSource)
Verarbeitet einen inneren Datensatz als Zentraldatenverteiler
|
void |
handleIncomingDrainData(ResultData result,
DavTransactionManager.Subscription transactionSubscription)
Wird von der Senke aufgerufen, die sich im Datenverteiler auf die inneren Datensätze von einer Transaktions-Senken-Anmeldung angemeldet hat.
|
void |
handleSubscribeTransactionDrain(byte[] bytes)
Wird vom DavRequester aufgerufen um eine Transaktionssenke anzumelden
|
void |
handleSubscribeTransactionDrain(DavTransactionManager.ClientSubscriptionInformation subscriptions)
Wird vom DavRequester aufgerufen um eine Transaktionssenke anzumelden
|
void |
handleSubscribeTransactionSource(byte[] bytes)
Wird vom DavRequester aufgerufen um eine Transaktionsquelle anzumelden
|
void |
handleSubscribeTransactionSource(DavTransactionManager.ClientSubscriptionInformation subscriptions)
Wird vom DavRequester aufgerufen um eine Transaktionsquelle anzumelden
|
java.util.List<ApplicationDataTelegram> |
handleTelegrams(java.util.List<ApplicationDataTelegram> telegrams,
boolean isSource)
Wird vom Subscriptionsmanager aufgerufen, wenn ein Telegram im Zentraldatenverteiler verarbeitet wird.
|
void |
notifyUnsubscribe(BaseSubscriptionInfo baseSubscriptionInfo,
boolean isSender)
Wird vom Subscriptionsmanager aufgerufen, um zu signalisieren, dass eine Datenanmeldung ungültig geworden ist.
|
private void |
unsubscribeMyDrains(java.util.List<DavTransactionManager.Subscription> subscriptions)
Meldet alle Senken ab, die in der Liste sind
|
private void |
unsubscribeMySources(java.util.List<DavTransactionManager.Subscription> subscriptions)
Meldet alle Quellen ab, die in der Liste sind
|
private static final Debug _debug
private final ClientDavConnection _connection
private final TelegramManagerTransactionInterface _telegramManager
private final java.util.Map<java.lang.Long,AttributeGroupUsage> _transactionAttributeGroupUsages
private final java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> _sourceSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Quellen
private final java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> _drainSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Senken
private final boolean _disabled
private final java.util.Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataSender> _myOwnDataSources
private final java.util.Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataReceiver> _myOwnDataDrains
public DavTransactionManager(ClientDavConnection connection, TelegramManagerTransactionInterface telegramManager)
Erstellt einen neuen DavTransactionManager
connection
- Verbindung zum DatenverteilertelegramManager
- SubscriptionsManagerpublic java.util.List<ApplicationDataTelegram> handleTelegrams(java.util.List<ApplicationDataTelegram> telegrams, boolean isSource)
Wird vom Subscriptionsmanager aufgerufen, wenn ein Telegram im Zentraldatenverteiler verarbeitet wird. Hier wird geprüft, ob es sich um ein Transaktionstelegramm handelt und es werden entsprechende Aktionen durchgeführt (Datenindex eintragen, innere Telegramme an herkömmliche Empfänger verschicken)
telegrams
- Liste mit zusammengehörigen Telegrammen, die einen Datensatz darstellenisSource
- Kommt der Datensatz von der lokalen Quelle? (Sonst lokale Senke)private void handleDataset(Data dataset, short simulationVariant, boolean isSource)
Verarbeitet einen inneren Datensatz als Zentraldatenverteiler
dataset
- Inneren DatensatzsimulationVariant
- Simulationsvariante der ÜbertragungisSource
- Handelt es sich um eine Quelle? (Sonst Senke)public void handleIncomingDrainData(ResultData result, DavTransactionManager.Subscription transactionSubscription)
Wird von der Senke aufgerufen, die sich im Datenverteiler auf die inneren Datensätze von einer Transaktions-Senken-Anmeldung angemeldet hat. Die Funktion sorgt dafür, dass der innere Datensatz in einem Transaktionsdatensatz verpackt wird und an die Transaktionssenke übermittelt wird.
result
- ResultData aus dem inneren DatensatztransactionSubscription
- Anmeldung der Transaktionssenkeprivate TransmitterDataTelegram[] applicationTelegramsToTransmitterTelegrams(ApplicationDataTelegram[] applicationDataTelegrams)
Hilfsfunktion, die ein ApplicationDataTelegram-Array in ein TransmitterDataTelegram-Array umwandelt
applicationDataTelegrams
- ApplicationDataTelegram-Arrayprivate static ApplicationDataTelegram[] dataToTelegrams(SendDataObject sendDataObject, Data data)
Hinfsfunktion, die ein Data-Objekt in Telgramme zerlegt.
sendDataObject
- Ursprüngliches SendData-Objekt zur Rekonstruktion der Informationendata
- Data-Objekt mit den neuen Datenprivate static ApplicationDataTelegram[] createTelegramsFromBytes(byte[] bytes, BaseSubscriptionInfo baseSubscriptionInfo, boolean delayedDataFlag, long dataIndex, long dataTime, byte errorFlag, byte[] attributesIndicator)
Erstellt aus Daten-Bytes ein ApplicationDataTelegram-Array
bytes
- Daten-BytesbaseSubscriptionInfo
- Anmelde-infodelayedDataFlag
- Flag für nachgelieferte DatendataIndex
- DatenIndexdataTime
- DatenZeiterrorFlag
- Fehler-FlagattributesIndicator
- attributesIndicator oder nullpublic void handleSubscribeTransactionSource(byte[] bytes) throws java.io.IOException, OneSubscriptionPerSendData
Wird vom DavRequester aufgerufen um eine Transaktionsquelle anzumelden
bytes
- Serialisierte Info über Datenanmeldungjava.io.IOException
OneSubscriptionPerSendData
public void handleSubscribeTransactionSource(DavTransactionManager.ClientSubscriptionInformation subscriptions) throws OneSubscriptionPerSendData
Wird vom DavRequester aufgerufen um eine Transaktionsquelle anzumelden
subscriptions
- AnmeldeinformationOneSubscriptionPerSendData
- Fehler bei der Anmeldung (Z.B. es ist schon eine Senke vorhanden)public void handleSubscribeTransactionDrain(byte[] bytes) throws java.io.IOException, OneSubscriptionPerSendData
Wird vom DavRequester aufgerufen um eine Transaktionssenke anzumelden
bytes
- Serialisierte Info über Datenanmeldungjava.io.IOException
OneSubscriptionPerSendData
public void handleSubscribeTransactionDrain(DavTransactionManager.ClientSubscriptionInformation subscriptions) throws OneSubscriptionPerSendData
Wird vom DavRequester aufgerufen um eine Transaktionssenke anzumelden
subscriptions
- AnmeldeinformationOneSubscriptionPerSendData
- Fehler bei der Anmeldung (Z.B. es ist schon eine Senke vorhanden)private void addSubscription(java.util.Map<DavTransactionManager.Subscription,java.util.List<DavTransactionManager.Subscription>> subscriptionListMap, DavTransactionManager.Subscription transactionSubscription, java.util.List<DavTransactionManager.Subscription> innerSubscriptions) throws OneSubscriptionPerSendData
Fügt entweder den Quell oder den Senken-Anmeldungen eine Transaktions-Anmeldung hinzu
subscriptionListMap
- Liste, in die die Anmeldung hinzugefügt werden solltransactionSubscription
- TransaktionsanmeldunginnerSubscriptions
- Innere AnmeldungenOneSubscriptionPerSendData
- Es gibt bereits eine Anmeldung für diese Transaktionprivate DavTransactionManager.ClientSubscriptionInformation deserializeSubscriptionBytes(byte[] bytes) throws java.io.IOException
Hilfsfunktion, die das Bytearray, was vom Client kommt und die Anmeldedaten für eine Transaktion enthält, deserialisiert
bytes
- Bytearrayjava.io.IOException
- Sollte nicht auftretenpublic void notifyUnsubscribe(BaseSubscriptionInfo baseSubscriptionInfo, boolean isSender)
Wird vom Subscriptionsmanager aufgerufen, um zu signalisieren, dass eine Datenanmeldung ungültig geworden ist. Daraufhin werden hier alle Transaktionsanmeldungen und Anmeldungen der inneren Daten zu dieser Transaktion entfernt.
baseSubscriptionInfo
- Datenanmelde-InformationisSender
- handelt es sich um eine sendende Anmeldung?private void unsubscribeMySources(java.util.List<DavTransactionManager.Subscription> subscriptions)
Meldet alle Quellen ab, die in der Liste sind
subscriptions
- Liste mit Quell-Anmeldungenprivate void unsubscribeMyDrains(java.util.List<DavTransactionManager.Subscription> subscriptions)
Meldet alle Senken ab, die in der Liste sind
subscriptions
- Liste mit Senken-Anmeldungen