public class SubscriptionInfo extends Object implements Closeable
Constructor and Description |
---|
SubscriptionInfo(SubscriptionsManager subscriptionsManager,
BaseSubscriptionInfo baseSubscriptionInfo)
Erstellt eine neue SubscriptionInfo
|
Modifier and Type | Method and 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(ApplicationDataTelegram applicationDataTelegram,
boolean toCentralDistributor,
CommunicationInterface communication)
Verschickt ein einzelnes Datentelegramm an alle interessierten und korrekt angemeldeten Empfänger
|
void |
distributeTelegrams(List<ApplicationDataTelegram> applicationDataTelegrams,
boolean toCentralDistributor,
CommunicationInterface communication)
Verschickt eine Liste von zusammengehörigen Datentelegrammen an alle interessierten und korrekt angemeldeten Empfänger
|
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.
|
RemoteSourceSubscription |
getOrCreateRemoteSourceSubscription(TransmitterCommunicationInterface connection)
Erstellt eine Remote-Quellen-Anmeldung über eine angegebene Verbindung bzw.
|
Collection<ReceivingSubscription> |
getReceivingSubscriptions()
Gibt alle Empfangs-Anmeldungen zurück
|
List<ReceivingSubscription> |
getReceivingSubscriptions(CommunicationInterface communicationInterface)
Gibt alle Empfangs-Anmeldungen zu einer Verbindung zurück
|
Collection<SendingSubscription> |
getSendingSubscriptions()
Gibt alle sendenden Anmeldungen zurück
|
List<SendingSubscription> |
getSendingSubscriptions(CommunicationInterface communicationInterface)
Gibt alle Sende-Anmeldungen zu einer Verbindung zurück
|
List<ReceivingSubscription> |
getValidReceiverSubscriptions()
Gibt alle gültigen empfangenden Anmeldungen zurück
|
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
|
List<ReceivingSubscription> |
removeReceivingSubscriptions(CommunicationInterface communication)
Entfernt alle empfangende Anmedungen, die über die angegebene Verbindung angemeldet sind
|
void |
removeSendingSubscription(SendingSubscription sendingSubscription)
Entfernt eine sendende Anmeldung
|
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
|
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,
Collection<Long> ids)
Erstellt eine eingehende Anmeldung von einem anderen Datenverteiler als interessierter Empfänger (dieser Datenverteiler ist dann
typischerweise potentiell Quell-Datenverteiler bzw.
|
void |
updateOrCreateRemoteSenderSubscription(TransmitterCommunicationInterface communication,
Collection<Long> ids)
Erstellt eine eingehende Anmeldung von einem anderen Datenverteiler als interessierter Sender (dieser Datenverteiler ist dann
typischerweise potentiell eine Senke bzw.
|
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, 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 List<SendingSubscription> removeSendingSubscriptions(CommunicationInterface communication)
communication
- Verbindungpublic List<ReceivingSubscription> removeReceivingSubscriptions(CommunicationInterface communication)
communication
- Verbindungpublic List<SendingSubscription> getValidSenderSubscriptions()
public List<ReceivingSubscription> getValidReceiverSubscriptions()
public boolean isEmpty()
public boolean isCentralDistributor()
public 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(ApplicationDataTelegram applicationDataTelegram, boolean toCentralDistributor, CommunicationInterface communication)
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 stattpublic void distributeTelegrams(List<ApplicationDataTelegram> applicationDataTelegrams, boolean toCentralDistributor, CommunicationInterface communication)
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 stattpublic 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 BaseSubscriptionInfo getBaseSubscriptionInfo()
public void updateRemoteConnections()
public boolean hasSource()
public boolean hasDrain()
public boolean isValidSender(CommunicationInterface communication)
communication
- Kommunikationpublic void setMultiRemoteLockActive(boolean multiRemoteLockActive)
multiRemoteLockActive
- ob die Sperre _multiRemoteLockActive
aktiv sein soll.public List<SendingSubscription> getSendingSubscriptions(CommunicationInterface communicationInterface)
communicationInterface
- Verbindungpublic List<ReceivingSubscription> getReceivingSubscriptions(CommunicationInterface communicationInterface)
communicationInterface
- Verbindungpublic Collection<SendingSubscription> getSendingSubscriptions()
public Collection<ReceivingSubscription> getReceivingSubscriptions()
public void updateBestWay(long transmitterId, TransmitterCommunicationInterface oldConnection, TransmitterCommunicationInterface newConnection)
transmitterId
- Zentraldatenverteiler-IDoldConnection
- Alte VerbindungnewConnection
- Neue Verbindungpublic byte[] serializeToBytes() throws IOException
IOException
public RemoteDrainSubscription getOrCreateRemoteDrainSubscription(TransmitterCommunicationInterface connection)
connection
- Verbindungpublic RemoteSourceSubscription getOrCreateRemoteSourceSubscription(TransmitterCommunicationInterface connection)
connection
- Verbindungpublic void updateOrCreateRemoteReceiverSubscription(TransmitterCommunicationInterface communication, Collection<Long> ids)
communication
- Verbindungids
- Liste mit Zentaldatenverteiler-Ids, die berücksichtigt werden sollenpublic void updateOrCreateRemoteSenderSubscription(TransmitterCommunicationInterface communication, Collection<Long> ids)
communication
- Verbindungids
- Liste mit Zentaldatenverteiler-Ids, die berücksichtigt werden sollenpublic void open()
public void close()
close
in interface Closeable
close
in interface AutoCloseable