java.io.Closeable
, java.lang.AutoCloseable
public 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 false
public boolean isCentralDistributor()
true
zurück, wenn dieser Datenverteiler Zentraldatenverteiler für diese Anmeldung isttrue
, wenn dieser Datenverteiler Zentraldatenverteiler für diese Anmeldung ist, sonst false
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(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 false
public boolean hasDrain()
true
zurück, wenn eine Senke verbunden ist (entweder lokal oder über eine Transmitterverbindung)true
, wenn eine Senke verbunden ist, sonst false
public 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.IOException
public java.lang.String toString()
toString
in class java.lang.Object
public 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.AutoCloseable
close
in interface java.io.Closeable