public class Sender extends Object implements ClientSenderInterface
SimpleSender
ist diese Klasse zum
Versand von Massendaten gedacht.SubscriptionManager
Modifier and Type | Field and Description |
---|---|
private boolean |
canSend
false = Sendevorgang abbrechen, da negative Sendesteuerung.
|
private DataDescription |
dataDescription
ATG & ASP
|
private ClientDavInterface |
dav
Verbindung zum Datenverteiler
|
private static Debug |
debug
Debug-Ausgaben
|
private static boolean |
DONT_WAIT_FOR_SEND_CTRL |
private byte |
lastState |
private static byte |
NO_SENDCTRL_YET |
private static boolean |
NOT_DELAYED |
private SystemObject |
receiver
Empfängerobjekt
|
private static boolean |
WAIT_FOR_SEND_CTRL |
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
Modifier | Constructor and Description |
---|---|
protected |
Sender(ClientDavInterface dav,
SystemObject receiver,
DataDescription dataDescription) |
Modifier and Type | Method and Description |
---|---|
void |
dataRequest(SystemObject object,
DataDescription dataDescription,
byte state)
Sendesteuerung des Datenverteilers an die Applikation.
|
DataDescription |
getDataDescription() |
ClientDavInterface |
getDav() |
byte |
getLastState() |
SystemObject |
getReceiver() |
boolean |
isRequestSupported(SystemObject object,
DataDescription dataDescription)
Diese Methode muss von der Applikation implementiert werden, um zu signalisieren, ob Sendesteuerungen erwünscht sind und mit der Methode
dataRequest verarbeitet werden. |
boolean |
send(Data data)
Sendet die spezifizierten Daten als "online aktuell" mit der aktuellen Systemzeit.
|
boolean |
send(Data data,
boolean delayed)
Sendet die spezifizierten Daten mit der aktuellen Systemzeit.
|
boolean |
send(Data data,
long dataTime,
boolean delayed)
Sendet die spezifizierten Daten.
|
private boolean |
sendData(Data data,
long dataTime,
boolean delayed,
boolean waitForPosSendCtrl)
Sendet die spezifizierten Daten.
|
boolean |
sendIfPosSendCtrl(Data data)
Sendet die spezifizierten Daten als "online aktuell" mit der aktuellen Systemzeit.
|
void |
sendIfPosSendCtrl(Data data,
boolean delayed)
Sendet die spezifizierten Daten mit der aktuellen Systemzeit.
|
void |
sendIfPosSendCtrl(Data data,
long dataTime,
boolean delayed)
Sendet die spezifizierten Daten mit der aktuellen Systemzeit.
|
void |
sendIgnoreSendControl(Data data,
long dataTime,
boolean delayed)
Sendet Daten ohne auf die Sendesteuerung zu achten.
|
static Sender |
subscribe(ClientDavInterface dav,
SystemObject receiver,
String attributeGroup,
String aspect,
SenderRole srole)
Erzeugt einen Sender.
|
static Sender |
subscribeSender(ClientDavInterface dav,
String sysObj,
String attributeGroup,
String aspect)
Erzeugt einen einfachen Sender.
|
static Sender |
subscribeSender(ClientDavInterface dav,
SystemObject sysObj,
String attributeGroup,
String aspect)
Erzeugt einen einfachen Sender.
|
static Sender |
subscribeSource(ClientDavInterface dav,
String sysObj,
String attributeGroup,
String aspect)
Erzeugt eine Quelle.
|
boolean |
unsubscribe()
Meldet den Versand von Daten ab.
|
private static final boolean NOT_DELAYED
private static final boolean WAIT_FOR_SEND_CTRL
private static final boolean DONT_WAIT_FOR_SEND_CTRL
private static final byte NO_SENDCTRL_YET
private DataDescription dataDescription
private SystemObject receiver
private ClientDavInterface dav
private boolean canSend
private byte lastState
private static final Debug debug
protected Sender(ClientDavInterface dav, SystemObject receiver, DataDescription dataDescription)
public static Sender subscribe(ClientDavInterface dav, SystemObject receiver, String attributeGroup, String aspect, SenderRole srole) throws FailureException
dav
- Verbindung zum Datenverteiler.receiver
- Empfänger.attributeGroup
- Attributgruppe.aspect
- Aspekt.srole
- Quelle oder 'einfahcer' Sender.FailureException
- Fehler bei der Kommunikation mit der Konfiguration. Oder: Es existiert bereits eine Sendeanmeldung.public static Sender subscribeSender(ClientDavInterface dav, SystemObject sysObj, String attributeGroup, String aspect) throws FailureException
dav
- Verbindung zum Datenverteiler.sysObj
- Empfänger.attributeGroup
- Attributgruppe-PIDaspect
- Aspekt-PIDFailureException
- Fehler bei der Kommunikation mit der Konfiguration. Oder: Es existiert bereits eine Sendeanmeldung.public static Sender subscribeSender(ClientDavInterface dav, String sysObj, String attributeGroup, String aspect) throws FailureException
dav
- Verbindung zum Datenverteiler.sysObj
- Pid des Objekts, für das die Anmeldung giltattributeGroup
- Attributgruppe-PIDaspect
- Aspekt-PIDFailureException
- Fehler bei der Kommunikation mit der Konfiguration. Oder: Es existiert bereits eine Sendeanmeldung.public static Sender subscribeSource(ClientDavInterface dav, String sysObj, String attributeGroup, String aspect) throws FailureException
dav
- Verbindung zum Datenverteiler.sysObj
- Objekt für das die Anmeldung gilt.attributeGroup
- Attributgruppe-PIDaspect
- Aspekt-PIDFailureException
- Fehler bei der Kommunikation mit der Konfiguration. Oder: Es existiert bereits eine Sendeanmeldung.public boolean unsubscribe()
false
falls die Abmeldung nicht durchgeführt werden konnte.public boolean send(Data data) throws FailureException
data
- Zu sendende Daten.true
falls die Daten gesendet wurden, false
falls der Versand von der Sendesteuerung gestoppt wurde.FailureException
public boolean send(Data data, boolean delayed) throws FailureException
data
- Zu sendende Daten.delayed
- falls wahr, werden Daten als nachgeliefert gekennzeichnettrue
falls die Daten gesendet wurden, false
falls der Versand von der Sendesteuerung gestoppt wurde.FailureException
public boolean send(Data data, long dataTime, boolean delayed) throws FailureException
data
- Zu sendende Daten.dataTime
- Datenzeitstempel des zu sendenden Datensatzesdelayed
- falls wahr, werden Daten als nachgeliefert gekennzeichnettrue
falls die Daten gesendet wurden, false
falls der Versand von der Sendesteuerung gestoppt wurde.FailureException
public boolean sendIfPosSendCtrl(Data data) throws FailureException
data
- Zu sendende Daten.FailureException
public void sendIfPosSendCtrl(Data data, boolean delayed) throws FailureException
data
- Zu sendende Daten.delayed
- falls wahr, werden Daten als nachgeliefert gekennzeichnetFailureException
public void sendIfPosSendCtrl(Data data, long dataTime, boolean delayed) throws FailureException
data
- Zu sendende Daten.dataTime
- Datenzeitstempel des zu sendenden Datensatzesdelayed
- falls wahr, werden Daten als nachgeliefert gekennzeichnetFailureException
private boolean sendData(Data data, long dataTime, boolean delayed, boolean waitForPosSendCtrl) throws FailureException
data
- Zu sendende Daten.dataTime
- Datenzeitstempel des zu sendenden Datensatzesdelayed
- falls wahr, werden Daten als nachgeliefert gekennzeichnetwaitForPosSendCtrl
- falls wahr, wird auf pos. Sendesteuerung gewartet (falls aktuelle SendeSt. negativ)true
falls die Daten gesendet wurden, false
falls der Versand von der Sendesteuerung gestoppt wurde.FailureException
public void sendIgnoreSendControl(Data data, long dataTime, boolean delayed) throws FailureException
data
- Zu sendende Daten.dataTime
- Datenzeitstempel des zu sendenden Datensatzesdelayed
- wahr, falls Daten als nachgeliefert gekennzeichnet werden sollenFailureException
public void dataRequest(SystemObject object, DataDescription dataDescription, byte state)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
in interface ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene Objekt, auf das sich die Sendesteuerung bezieht.dataDescription
- Beschreibende Informationen zu den angemeldeten Daten auf die sich die Sendesteuerung bezieht.state
- Status der Sendesteuerung. Kann einen der Werte START_SENDING
, STOP_SENDING
,
STOP_SENDING_NO_RIGHTS
, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
enthalten.ClientSenderInterface.dataRequest(SystemObject,DataDescription,byte)
public byte getLastState()
public boolean isRequestSupported(SystemObject object, DataDescription dataDescription)
de.bsvrz.dav.daf.main.ClientSenderInterface
dataRequest
verarbeitet werden. In der Implementierung dieser Methode dürfen keine synchronen Aufrufe, die auf Telegramme vom Datenverteiler
warten (wie z.B. Konfigurationsanfragen) durchgeführt werden, da ansonsten ein Deadlock entsteht.isRequestSupported
in interface ClientSenderInterface
object
- Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription
- Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.true
, falls Sendesteuerungen gewünscht sind, sonst false
.ClientSenderInterface.isRequestSupported(SystemObject,DataDescription)
public ClientDavInterface getDav()
public SystemObject getReceiver()
public DataDescription getDataDescription()