Class AnswerReceiver

  • All Implemented Interfaces:
    de.bsvrz.dav.daf.main.ClientReceiverInterface
    Direct Known Subclasses:
    ProtocolAnswerReceiver, ScriptAnswerReceiver

    public abstract class AnswerReceiver
    extends java.lang.Object
    implements de.bsvrz.dav.daf.main.ClientReceiverInterface
    Klasse die den Empfang von Daten über den Datenverteiler übernimmt. Eingehende Daten werden nur gespeichert, wenn diese einen Datenteil haben. Außerdem müssen Anfrage-Id und Sender mit den im Konstruktor übergebenen Objekten übereinstimmen.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected de.bsvrz.dav.daf.main.DataDescription dataDescription
      Angemeldete Atg und Aspekt.
      protected de.bsvrz.dav.daf.main.ClientDavInterface dav
      Verbindung zum Datenverteiler.
      protected de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer<de.bsvrz.dav.daf.main.ResultData> incoming
      Eingegangene Daten
      protected de.bsvrz.dav.daf.main.config.SystemObject object
      Skriptobjekt, auf das sich die Antwort bezieht.
      protected de.bsvrz.dav.daf.main.config.SystemObject receiver
      Objekt das die Anfrage, auf die sich diese Antwort bezieht, gesendet hat.
      protected long requestId
      Anfrage-Id.
    • Constructor Summary

      Constructors 
      Constructor Description
      AnswerReceiver​(de.bsvrz.dav.daf.main.ClientDavInterface dav, de.bsvrz.dav.daf.main.config.SystemObject object, java.lang.String atg, java.lang.String asp, de.bsvrz.dav.daf.main.config.SystemObject receiver, long requestId, long timeout)
      Erzeugt den Empfänger.
    • Method Summary

      Modifier and Type Method Description
      boolean hasData()
      Zeigt an, ob Antwortdaten vorliegen.
      protected void subscribe​(de.bsvrz.dav.daf.main.ReceiverRole role)  
      de.bsvrz.dav.daf.main.ResultData take()
      Liefert einen Antwortdatensatz.
      de.bsvrz.dav.daf.main.ResultData take​(long timeout)
      Liefert einen Antwortdatensatz.
      boolean unsubscribe()
      Meldet den Empfang von Daten ab.
      protected abstract void update​(de.bsvrz.dav.daf.main.ResultData result)
      Wird für jeden empfangenen Datensatz von update(ResultData[]) aufgerufen.
      void update​(de.bsvrz.dav.daf.main.ResultData[] results)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • dav

        protected de.bsvrz.dav.daf.main.ClientDavInterface dav
        Verbindung zum Datenverteiler.
      • object

        protected de.bsvrz.dav.daf.main.config.SystemObject object
        Skriptobjekt, auf das sich die Antwort bezieht.
      • incoming

        protected de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer<de.bsvrz.dav.daf.main.ResultData> incoming
        Eingegangene Daten
      • dataDescription

        protected de.bsvrz.dav.daf.main.DataDescription dataDescription
        Angemeldete Atg und Aspekt.
      • requestId

        protected long requestId
        Anfrage-Id.
      • receiver

        protected de.bsvrz.dav.daf.main.config.SystemObject receiver
        Objekt das die Anfrage, auf die sich diese Antwort bezieht, gesendet hat.
    • Constructor Detail

      • AnswerReceiver

        public AnswerReceiver​(de.bsvrz.dav.daf.main.ClientDavInterface dav,
                              de.bsvrz.dav.daf.main.config.SystemObject object,
                              java.lang.String atg,
                              java.lang.String asp,
                              de.bsvrz.dav.daf.main.config.SystemObject receiver,
                              long requestId,
                              long timeout)
        Erzeugt den Empfänger. Empfänger meldet sich sofort als Empfänger auf Daten an.
        Parameters:
        dav - Verbindung zum Datenverteiler
        object - Systemobjekt, dessen Daten empfangen werden sollen
        atg - Pid der Attributgruppe auf die sich der Empfänger anmeldet.
        asp - Pid des Aspekts auf den sich der Empfänger anmeldet.
        receiver - Objekt das als Absender im Datensatz eingetragen wist.
        requestId - Anfrage-Id.
        timeout - Maximale Wartezeit, in der eine Antwort eingehen muss. 0 ist die unbegrenzte Wartezeit.
    • Method Detail

      • subscribe

        protected void subscribe​(de.bsvrz.dav.daf.main.ReceiverRole role)
      • hasData

        public boolean hasData()
        Zeigt an, ob Antwortdaten vorliegen.
        Returns:
        True, Falls antwortdaten vorliegen.
      • unsubscribe

        public boolean unsubscribe()
        Meldet den Empfang von Daten ab.
        Returns:
        Immer true
      • update

        public void update​(de.bsvrz.dav.daf.main.ResultData[] results)
        Specified by:
        update in interface de.bsvrz.dav.daf.main.ClientReceiverInterface
        See Also:
        ClientReceiverInterface.update(ResultData[])
      • update

        protected abstract void update​(de.bsvrz.dav.daf.main.ResultData result)
        Wird für jeden empfangenen Datensatz von update(ResultData[]) aufgerufen.
        Parameters:
        result - Eingehender Datensatz. Enthält Daten, d.h. rd.getData() ist nicht null.
      • take

        public de.bsvrz.dav.daf.main.ResultData take​(long timeout)
                                              throws java.lang.InterruptedException
        Liefert einen Antwortdatensatz. Blockiert, bis Antwortdaten vorliegen oder bis zum übergebenen gesetzten Timeout.
        Parameters:
        timeout - Wartezeit. 0 bedeutet unbegrenzte Wartezeit.
        Returns:
        Antwortdatensatz oder null bei Fehler.
        Throws:
        java.lang.InterruptedException - Warten auf Antwortdatensatz wurde unterbrochen.
      • take

        public de.bsvrz.dav.daf.main.ResultData take()
                                              throws java.lang.InterruptedException
        Liefert einen Antwortdatensatz. Blockiert, bis Antwortdaten vorliegen oder bis zum im Konstruktor gesetzten Timeout.
        Returns:
        Antwortdatensatz oder null bei Fehler.
        Throws:
        java.lang.InterruptedException - Warten auf Antwortdatensatz wurde unterbrochen.