java.io.Closeable, java.lang.AutoCloseablepublic class SubscriptionInfo
extends java.lang.Object
implements java.io.Closeable
| Constructor | Description |
|---|---|
SubscriptionInfo(SubscriptionsManager subscriptionsManager,
de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo) |
Erstellt eine neue SubscriptionInfo
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
addReceivingSubscription(ReceivingSubscription receivingSubscription) |
Fügt eine empfangende Anmeldung hinzu
|
void |
addSendingSubscription(SendingSubscription sendingSubscription) |
Fügt eine sendende Anmeldung hinzu
|
void |
close() |
Markiert das SubscriptionInfo als geschlossen, nachdem Änderungen an den Anmeldungen durchgeführt wurden.
|
void |
distributeTelegram(de.bsvrz.dav.daf.communication.lowLevel.telegrams.ApplicationDataTelegram applicationDataTelegram,
boolean toCentralDistributor,
CommunicationInterface communication,
long applicationId) |
Verschickt ein einzelnes Datentelegramm an alle interessierten und korrekt angemeldeten Empfänger
|
void |
distributeTelegrams(java.util.List<de.bsvrz.dav.daf.communication.lowLevel.telegrams.ApplicationDataTelegram> applicationDataTelegrams,
boolean toCentralDistributor,
CommunicationInterface communication,
long applicationId) |
Verschickt eine Liste von zusammengehörigen Datentelegrammen an alle interessierten und korrekt angemeldeten Empfänger
|
de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo |
getBaseSubscriptionInfo() |
Gibt das BaseSubscriptionInfo zurück
|
long |
getCurrentDataIndex(long runningNumber) |
Gibt den zuletzt berechneten Datenindex zurück
|
long |
getNextDataIndex(long runningNumber) |
Berechnet den nächsten Datenindex und gibt diesen zurück
|
RemoteDrainSubscription |
getOrCreateRemoteDrainSubscription(TransmitterCommunicationInterface connection) |
Erstellt eine Remote-Senken-Anmeldung über eine angegebene Verbindung bzw. gibt diese zurück wenn sie schon besteht
|
RemoteSourceSubscription |
getOrCreateRemoteSourceSubscription(TransmitterCommunicationInterface connection) |
Erstellt eine Remote-Quellen-Anmeldung über eine angegebene Verbindung bzw. gibt diese zurück wenn sie schon besteht
|
java.util.Collection<ReceivingSubscription> |
getReceivingSubscriptions() |
Gibt alle Empfangs-Anmeldungen zurück
|
java.util.List<ReceivingSubscription> |
getReceivingSubscriptions(CommunicationInterface communicationInterface) |
Gibt alle Empfangs-Anmeldungen zu einer Verbindung zurück
|
java.util.Collection<SendingSubscription> |
getSendingSubscriptions() |
Gibt alle sendenden Anmeldungen zurück
|
java.util.List<SendingSubscription> |
getSendingSubscriptions(CommunicationInterface communicationInterface) |
Gibt alle Sende-Anmeldungen zu einer Verbindung zurück
|
java.util.List<ReceivingSubscription> |
getValidReceiverSubscriptions() |
Gibt alle gültigen empfangenden Anmeldungen zurück
|
java.util.List<SendingSubscription> |
getValidSenderSubscriptions() |
Gibt alle gültigen sendenden Anmeldungen zurück
|
void |
handleUserRightsChanged(long userId) |
Aktualisert die Rechte von Anmeldungen und macht diese dadurch gültig/ungültig
|
boolean |
hasDrain() |
Gibt
true zurück, wenn eine Senke verbunden ist (entweder lokal oder über eine Transmitterverbindung) |
boolean |
hasSource() |
Gibt
true zurück, wenn eine Quelle verbunden ist (entweder lokal oder über eine Transmitterverbindung) |
boolean |
isCentralDistributor() |
Gibt
true zurück, wenn dieser Datenverteiler Zentraldatenverteiler für diese Anmeldung ist |
boolean |
isEmpty() |
Gibt
true zurück, wenn es keine Anmeldungen gibt |
boolean |
isValidSender(CommunicationInterface communication) |
Prüft, ob die angegebene Kommunikationsklasse senden darf (also als gültiger Sender angemeldet ist)
|
void |
open() |
Markiert das SubscriptionInfo als offen, sodass Änderungen an den Anmeldungen durchgeführt werden dürfen.
|
void |
removeReceivingSubscription(ReceivingSubscription receivingSubscription) |
Entfernt eine empfangende Anmeldung
|
java.util.List<ReceivingSubscription> |
removeReceivingSubscriptions(CommunicationInterface communication) |
Entfernt alle empfangende Anmedungen, die über die angegebene Verbindung angemeldet sind
|
void |
removeSendingSubscription(SendingSubscription sendingSubscription) |
Entfernt eine sendende Anmeldung
|
java.util.List<SendingSubscription> |
removeSendingSubscriptions(CommunicationInterface communication) |
Entfernt alle sendende Anmedungen, die über die angegebene Verbindung angemeldet sind
|
byte[] |
serializeToBytes() |
Serialisiert die Anmelde-Informationen in Bytes um sie über den Datenverteiler zu Testzwecken abrufen zu können.
|
void |
setMultiRemoteLockActive(boolean multiRemoteLockActive) |
Setzt, ob Anmeldung ungültig gemacht werden sollen, weil mehrere remote-Zzentraldatenverteiler positive Rückmeldungen verschickt
haben
|
void |
setRemoteDrainSubscriptionStatus(TransmitterCommunicationInterface communication,
ConnectionState state,
long mainTransmitterId) |
Verarbeitet eine Anmeldungsquittung von einem anderen Datenverteiler, aktualisert den Status der entsprechenden ausgehenden
Anmeldung
|
void |
setRemoteSourceSubscriptionStatus(TransmitterCommunicationInterface communication,
ConnectionState state,
long mainTransmitterId) |
Verarbeitet eine Anmeldungsquittung von einem anderen Datenverteiler, aktualisert den Status der entsprechenden ausgehenden
Anmeldung
|
java.lang.String |
toString() |
|
void |
updateBestWay(long transmitterId,
TransmitterCommunicationInterface oldConnection,
TransmitterCommunicationInterface newConnection) |
Wird von bestWaymanager aufgerufen, wenn es eine neue beste lokale Verbindung zu einem Zentraldatenverteiler gibt
|
void |
updateOrCreateRemoteReceiverSubscription(TransmitterCommunicationInterface communication,
java.util.Collection<java.lang.Long> ids) |
Erstellt eine eingehende Anmeldung von einem anderen Datenverteiler als interessierter Empfänger (dieser Datenverteiler ist dann
typischerweise potentiell Quell-Datenverteiler bzw. agiert als Proxy zum eigentlichen Zentraldatenverteiler).
|
void |
updateOrCreateRemoteSenderSubscription(TransmitterCommunicationInterface communication,
java.util.Collection<java.lang.Long> ids) |
Erstellt eine eingehende Anmeldung von einem anderen Datenverteiler als interessierter Sender (dieser Datenverteiler ist dann
typischerweise potentiell eine Senke bzw. agiert als Proxy zum eigentlichen Zentraldatenverteiler).
|
void |
updatePendingSubscriptionDataIndex(CommunicationInterface communication,
long dataIndex) |
|
void |
updateRemoteConnections() |
Wird aufgerufen, wenn im ListsManager ein Update stattfand und so eventuell neue oder bessere Wege für die Remote-Anmeldungen
existieren
|
public SubscriptionInfo(SubscriptionsManager subscriptionsManager, de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo baseSubscriptionInfo)
subscriptionsManager - AnmeldungsverwaltungbaseSubscriptionInfo - Datenidentifikationpublic void addSendingSubscription(SendingSubscription sendingSubscription)
sendingSubscription - neue sendende Anmeldungpublic void addReceivingSubscription(ReceivingSubscription receivingSubscription)
receivingSubscription - neue empfangende Anmeldungpublic void removeReceivingSubscription(ReceivingSubscription receivingSubscription)
receivingSubscription - empfangende Anmeldungpublic void removeSendingSubscription(SendingSubscription sendingSubscription)
sendingSubscription - sendende Anmeldungpublic java.util.List<SendingSubscription> removeSendingSubscriptions(CommunicationInterface communication)
communication - Verbindungpublic java.util.List<ReceivingSubscription> removeReceivingSubscriptions(CommunicationInterface communication)
communication - Verbindungpublic java.util.List<SendingSubscription> getValidSenderSubscriptions()
public java.util.List<ReceivingSubscription> getValidReceiverSubscriptions()
public boolean isEmpty()
true zurück, wenn es keine Anmeldungen gibttrue, wenn es keine Anmeldungen gibt, sonst falsepublic boolean isCentralDistributor()
true zurück, wenn dieser Datenverteiler Zentraldatenverteiler für diese Anmeldung isttrue, wenn dieser Datenverteiler Zentraldatenverteiler für diese Anmeldung ist, sonst falsepublic long getNextDataIndex(long runningNumber)
runningNumber - Laufende Nummer, wird vom SubscriptionsManager bereitgestellt, da diese Objekte gelöscht werden sobas keine
Anmeldungen mehr vorhanden sindpublic long getCurrentDataIndex(long runningNumber)
runningNumber - Laufende Nummer, wird vom SubscriptionsManager bereitgestellt, da diese Objekte gelöscht werden sobas keine
Anmeldungen mehr vorhanden sindpublic void distributeTelegram(de.bsvrz.dav.daf.communication.lowLevel.telegrams.ApplicationDataTelegram applicationDataTelegram,
boolean toCentralDistributor,
CommunicationInterface communication,
long applicationId)
applicationDataTelegram - DatentelegrammtoCentralDistributor - wenn das Telegramm noch nicht beim Zentraldatenverteiler behandelt wurde, also der Datenindex noch
nicht vernünftig gesetzt wurdecommunication - Verbindung über die der Emfang erfolgt ist (zur Rechteprüfung), bei null findet keine Prüfung stattapplicationId - Applikation, die das Telegramm ursprünglich gesendet hat oder -1 falls unbekanntpublic void distributeTelegrams(java.util.List<de.bsvrz.dav.daf.communication.lowLevel.telegrams.ApplicationDataTelegram> applicationDataTelegrams,
boolean toCentralDistributor,
CommunicationInterface communication,
long applicationId)
applicationDataTelegrams - DatentelegrammetoCentralDistributor - wenn das Telegramm noch nicht beim Zentraldatenverteiler behandelt wurde, also der Datenindex noch
nicht vernünftig gesetzt wurdecommunication - Verbindung über die der Emfang erfolgt ist (zur Rechteprüfung), bei null findet keine Prüfung stattapplicationId - Applikation, die die Telegramme ursprünglich gesendet hat oder -1 falls unbekanntpublic void updatePendingSubscriptionDataIndex(CommunicationInterface communication, long dataIndex)
public void handleUserRightsChanged(long userId)
userId - geänderter Benutzer, dessen Anmeldungen zu aktualisieren sindpublic void setRemoteSourceSubscriptionStatus(TransmitterCommunicationInterface communication, ConnectionState state, long mainTransmitterId)
communication - Kommunikationstate - neuer StatusmainTransmitterId - Id des Zentraldatenverteilerspublic void setRemoteDrainSubscriptionStatus(TransmitterCommunicationInterface communication, ConnectionState state, long mainTransmitterId)
communication - Kommunikationstate - neuer StatusmainTransmitterId - Id des Zentraldatenverteilerspublic de.bsvrz.dav.daf.communication.lowLevel.telegrams.BaseSubscriptionInfo getBaseSubscriptionInfo()
public void updateRemoteConnections()
public boolean hasSource()
true zurück, wenn eine Quelle verbunden ist (entweder lokal oder über eine Transmitterverbindung)true, wenn eine Quelle verbunden ist, sonst falsepublic boolean hasDrain()
true zurück, wenn eine Senke verbunden ist (entweder lokal oder über eine Transmitterverbindung)true, wenn eine Senke verbunden ist, sonst falsepublic boolean isValidSender(CommunicationInterface communication)
communication - Kommunikationpublic void setMultiRemoteLockActive(boolean multiRemoteLockActive)
multiRemoteLockActive - ob die Sperre _multiRemoteLockActive aktiv sein soll.public java.util.List<SendingSubscription> getSendingSubscriptions(CommunicationInterface communicationInterface)
communicationInterface - Verbindungpublic java.util.List<ReceivingSubscription> getReceivingSubscriptions(CommunicationInterface communicationInterface)
communicationInterface - Verbindungpublic java.util.Collection<SendingSubscription> getSendingSubscriptions()
public java.util.Collection<ReceivingSubscription> getReceivingSubscriptions()
public void updateBestWay(long transmitterId,
TransmitterCommunicationInterface oldConnection,
TransmitterCommunicationInterface newConnection)
transmitterId - Zentraldatenverteiler-IDoldConnection - Alte VerbindungnewConnection - Neue Verbindungpublic byte[] serializeToBytes()
throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Objectpublic RemoteDrainSubscription getOrCreateRemoteDrainSubscription(TransmitterCommunicationInterface connection)
connection - Verbindungpublic RemoteSourceSubscription getOrCreateRemoteSourceSubscription(TransmitterCommunicationInterface connection)
connection - Verbindungpublic void updateOrCreateRemoteReceiverSubscription(TransmitterCommunicationInterface communication, java.util.Collection<java.lang.Long> ids)
communication - Verbindungids - Liste mit Zentaldatenverteiler-Ids, die berücksichtigt werden sollenpublic void updateOrCreateRemoteSenderSubscription(TransmitterCommunicationInterface communication, java.util.Collection<java.lang.Long> ids)
communication - Verbindungids - Liste mit Zentaldatenverteiler-Ids, die berücksichtigt werden sollenpublic void open()
Wird auf den SubscriptionsManager synchronisiert ausgeführt
public void close()
Synchronisiert auf den _subscriptionsManager, daher keine Synchronisation von _referenceCounter notwendig.
close in interface java.lang.AutoCloseableclose in interface java.io.Closeable