public class DavTransactionManager extends Object
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 Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> |
_drainSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Senken
|
private Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataReceiver> |
_myOwnDataDrains |
private Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataSender> |
_myOwnDataSources |
private Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> |
_sourceSubscriptions
Map Transaktionsanmeldung->Innere Anmeldungen für Quellen
|
private TelegramManagerTransactionInterface |
_telegramManager |
private Map<Long,AttributeGroupUsage> |
_transactionAttributeGroupUsages |
Constructor and Description |
---|
DavTransactionManager(ClientDavConnection connection,
TelegramManagerTransactionInterface telegramManager)
Erstellt einen neuen DavTransactionManager
|
Modifier and Type | Method and Description |
---|---|
private void |
addSubscription(Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> subscriptionListMap,
DavTransactionManager.Subscription transactionSubscription,
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
|
List<ApplicationDataTelegram> |
handleTelegrams(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(List<DavTransactionManager.Subscription> subscriptions)
Meldet alle Senken ab, die in der Liste sind
|
private void |
unsubscribeMySources(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 Map<Long,AttributeGroupUsage> _transactionAttributeGroupUsages
private final Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> _sourceSubscriptions
private final Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> _drainSubscriptions
private final boolean _disabled
private final Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataSender> _myOwnDataSources
private final Map<DavTransactionManager.Subscription,DavTransactionManager.InnerTransactionDataReceiver> _myOwnDataDrains
public DavTransactionManager(ClientDavConnection connection, TelegramManagerTransactionInterface telegramManager)
connection
- Verbindung zum DatenverteilertelegramManager
- SubscriptionsManagerpublic List<ApplicationDataTelegram> handleTelegrams(List<ApplicationDataTelegram> telegrams, boolean isSource)
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)
dataset
- Inneren DatensatzsimulationVariant
- Simulationsvariante der ÜbertragungisSource
- Handelt es sich um eine Quelle? (Sonst Senke)public void handleIncomingDrainData(ResultData result, DavTransactionManager.Subscription transactionSubscription)
result
- ResultData aus dem inneren DatensatztransactionSubscription
- Anmeldung der Transaktionssenkeprivate TransmitterDataTelegram[] applicationTelegramsToTransmitterTelegrams(ApplicationDataTelegram[] applicationDataTelegrams)
applicationDataTelegrams
- ApplicationDataTelegram-Arrayprivate static ApplicationDataTelegram[] dataToTelegrams(SendDataObject sendDataObject, Data data)
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)
bytes
- Daten-BytesbaseSubscriptionInfo
- Anmelde-infodelayedDataFlag
- Flag für nachgelieferte DatendataIndex
- DatenIndexdataTime
- DatenZeiterrorFlag
- Fehler-FlagattributesIndicator
- attributesIndicator oder nullpublic void handleSubscribeTransactionSource(byte[] bytes) throws IOException, OneSubscriptionPerSendData
bytes
- Serialisierte Info über DatenanmeldungIOException
OneSubscriptionPerSendData
public void handleSubscribeTransactionSource(DavTransactionManager.ClientSubscriptionInformation subscriptions) throws OneSubscriptionPerSendData
subscriptions
- AnmeldeinformationOneSubscriptionPerSendData
- Fehler bei der Anmeldung (Z.B. es ist schon eine Senke vorhanden)public void handleSubscribeTransactionDrain(byte[] bytes) throws IOException, OneSubscriptionPerSendData
bytes
- Serialisierte Info über DatenanmeldungIOException
OneSubscriptionPerSendData
public void handleSubscribeTransactionDrain(DavTransactionManager.ClientSubscriptionInformation subscriptions) throws OneSubscriptionPerSendData
subscriptions
- AnmeldeinformationOneSubscriptionPerSendData
- Fehler bei der Anmeldung (Z.B. es ist schon eine Senke vorhanden)private void addSubscription(Map<DavTransactionManager.Subscription,List<DavTransactionManager.Subscription>> subscriptionListMap, DavTransactionManager.Subscription transactionSubscription, List<DavTransactionManager.Subscription> innerSubscriptions) throws OneSubscriptionPerSendData
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 IOException
bytes
- BytearrayIOException
- Sollte nicht auftretenpublic void notifyUnsubscribe(BaseSubscriptionInfo baseSubscriptionInfo, boolean isSender)
baseSubscriptionInfo
- Datenanmelde-InformationisSender
- handelt es sich um eine sendende Anmeldung?private void unsubscribeMySources(List<DavTransactionManager.Subscription> subscriptions)
subscriptions
- Liste mit Quell-Anmeldungenprivate void unsubscribeMyDrains(List<DavTransactionManager.Subscription> subscriptions)
subscriptions
- Liste mit Senken-Anmeldungen