Class SimpleSender
java.lang.Object
de.bsvrz.sys.funclib.losb.kernsoftware.SimpleSender
- All Implemented Interfaces:
de.bsvrz.dav.daf.main.ClientSenderInterface
public final class SimpleSender
extends java.lang.Object
implements de.bsvrz.dav.daf.main.ClientSenderInterface
Klasse die das Senden immer unter Berücksichtigung der Sendesteuerung durchführt. Nach dem Senden der Daten meldet sich der Sender sofort beim
Datenverteiler ab. Falls keine Exception geworfen wird, und
WICHTIG
Wenn versucht wird, etwas ohne angemeldeten Empfänger Quelle zu senden, dann wird (korrekterweise) ein Fehler gemeldet. Problematisch wird es, wenn sofort danach eine Quellen-/Empfängeranmeldung durchgeführt und das Senden wiederholt wird. Dies führt zu einem Fehler, da die Sendesteuerung das Senden immer noch nicht gestattet. Daher sollte eine Pause zwischen zwei Sendeversuchen liegen. (Siehe JUnit-Tests).
sent
dennoch false ist, dann gibt es keinen Abnehmer für die Daten. WICHTIG
Wenn versucht wird, etwas ohne angemeldeten Empfänger Quelle zu senden, dann wird (korrekterweise) ein Fehler gemeldet. Problematisch wird es, wenn sofort danach eine Quellen-/Empfängeranmeldung durchgeführt und das Senden wiederholt wird. Dies führt zu einem Fehler, da die Sendesteuerung das Senden immer noch nicht gestattet. Daher sollte eine Pause zwischen zwei Sendeversuchen liegen. (Siehe JUnit-Tests).
-
Field Summary
Fields Modifier and Type Field Description java.lang.String
errorMsg
Mit null oder einer Fehlermeldung belegt.java.lang.Object
lock
Wird als Synchronisationspunkt verwendet.boolean
sent
Wird nach dem Senden gesetzt.Fields inherited from interface de.bsvrz.dav.daf.main.ClientSenderInterface
START_SENDING, STOP_SENDING, STOP_SENDING_NO_RIGHTS, STOP_SENDING_NOT_A_VALID_SUBSCRIPTION
-
Method Summary
Modifier and Type Method Description void
dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)
Sendesteuerung.boolean
isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)
Sendesteuerung ist erwünscht.static SimpleSender
send(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data)
Erzeugt einen Sender und sendet die Daten als einfacher Sender.static boolean
sendWait(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data, long timeout)
Erzeugt einen Sender und sendet die Daten als einfacher Sender.static SimpleSender
source(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data)
Erzeugt einen Sender und sendet die Daten als Quelle.static boolean
sourceWait(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data, long timeout)
Erzeugt einen Sender und sendet die Daten als einfache Quelle.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Field Details
-
lock
public java.lang.Object lockWird als Synchronisationspunkt verwendet. Wird von Sender mit sent.notifyAll() geweckt, nachdem die Daten gesendet wurden. -
sent
public boolean sentWird nach dem Senden gesetzt. True, falls das Senden erfolgreich durchgeführt wurde. False sonst. Falls keine Exception geworfen wird, und sent dennoch false ist, dann gibt es keinen Abnehmer für die Daten. -
errorMsg
public java.lang.String errorMsgMit null oder einer Fehlermeldung belegt.
-
-
Method Details
-
send
public static SimpleSender send(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data) throws SenderExceptionErzeugt einen Sender und sendet die Daten als einfacher Sender. Alternativ kann auch ein neues Objekt erzeugt werdenSimpleSender(ClientDavInterface, SystemObject, DataDescription, Data, boolean)
- das hat den gleichen Effekt.- Parameters:
dav
- Verbindung zum Datenverteilerreceiver
- Empfänger der DatendataDescription
- DataDescription der zu versendenden Datendata
- Daten, die versendet werden sollen- Returns:
- Einfacher Sender.
- Throws:
SenderException
- Falls es bei der Sendeanmeldung zu einem Fehler kommt.
-
sendWait
public static boolean sendWait(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data, long timeout) throws SenderExceptionErzeugt einen Sender und sendet die Daten als einfacher Sender. Die Methode wartet solange, bis die Daten gesendet wurden, oder es zu einem Fehler kam.- Parameters:
dav
- Verbindung zum Datenverteilerreceiver
- Empfänger der DatendataDescription
- DataDescription der zu versendenden Datendata
- Daten, die versendet werden sollentimeout
- Maximale Wartezeit in ms. Bei0
unbegrenzt.- Returns:
true
falls das Senden erfolgreich durchgeführt wurde.- Throws:
SenderException
- Fehler beim Senden.java.lang.RuntimeException
- Kann bei Fehler geworfen werden.
-
source
public static SimpleSender source(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data) throws SenderExceptionErzeugt einen Sender und sendet die Daten als Quelle.- Parameters:
dav
- Verbindung zum Datenverteilerreceiver
- Empfänger der DatendataDescription
- DataDescription der zu versendenden Datendata
- Daten, die versendet werden sollen- Returns:
- Quelle
- Throws:
SenderException
- Fehler beim Senden.
-
sourceWait
public static boolean sourceWait(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject receiver, de.bsvrz.dav.daf.main.DataDescription dataDescription, de.bsvrz.dav.daf.main.Data data, long timeout) throws SenderExceptionErzeugt einen Sender und sendet die Daten als einfache Quelle. Die Methode wartet solange, bis die Daten gesendet wurden, oder es zu einem Fehler kam.- Parameters:
dav
- Verbindung zum Datenverteilerreceiver
- Empfänger der DatendataDescription
- DataDescription der zu versendenden Datendata
- Daten, die versendet werden sollentimeout
- Maximale Wartezeit in ms. Bei0
unbegrenzt.- Returns:
- False, falls die Daten wegen negativer Sendesteuerung nicht gesendet wurden.
- Throws:
SenderException
- Falls es beim Senden zu einem Fehler kommt.java.lang.RuntimeException
- Kann bei Fehler geworfen werden.
-
dataRequest
public void dataRequest(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription, byte state)Sendesteuerung. Callback Methode für den Datenverteiler. Wird der Versand von Daten erlaubt, so werden die Daten sofort abgesetzt. Danach meldet sich der Sender unverzüglich ab. Wird der Versand der Daten nicht erlaubt, so werden sie verworfen.- Specified by:
dataRequest
in interfacede.bsvrz.dav.daf.main.ClientSenderInterface
- Parameters:
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.
-
isRequestSupported
public boolean isRequestSupported(de.bsvrz.dav.daf.main.config.SystemObject object, de.bsvrz.dav.daf.main.DataDescription dataDescription)Sendesteuerung ist erwünscht. Wird vom Datenverteiler aufgerufen. Liefert deshalb immer true zurück.- Specified by:
isRequestSupported
in interfacede.bsvrz.dav.daf.main.ClientSenderInterface
- Parameters:
object
- Das in der zugehörigen Sendeanmeldung angegebene System-Objekt.dataDescription
- Die in der zugehörigen Sendeanmeldung angegebenen beschreibenden Informationen der angemeldeten Daten.- Returns:
true
, falls Sendesteuerungen gewünscht sind, sonstfalse
.
-