Class OnlineBuffer

  • All Implemented Interfaces:
    java.lang.Runnable

    public class OnlineBuffer
    extends ProcessingBuffer
    Holt benötigte Daten vom Datenverteiler. Meldet sich als einfacher Empfänger beim Datenverteiler für die benötigten Datensätze an. Nach dem Erzeugen des Objektes sollte sofort init() aufgerufen werden. Dadurch werden Objekte erzeugt, die sich beim DAV als Empfänger für Online-Daten anmelden.
    • Constructor Detail

      • OnlineBuffer

        public OnlineBuffer​(de.bsvrz.dav.daf.main.ClientDavInterface dav,
                            ProcessingInterface processor,
                            ProcessingInformation pi,
                            java.util.List<de.bsvrz.sys.funclib.losb.util.Tuple<java.lang.Long,​java.lang.Long>> periods,
                            int startPeriodIndex,
                            java.lang.String scriptName,
                            de.bsvrz.dav.daf.accessControl.UserInfo userInfo)
                     throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
        init() sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.
        Parameters:
        dav - Verbindung zum Datenverteiler.
        processor - Objekt, das bei Ankunft von Daten benachrichtigt wird.
        pi - Informationen zur Datenaufbereitung.
        periods - Zeitbereiche, in denen Daten gesammelt werden sollen. Die Zeitbereiche müssen bereits sortiert und zusammengefasst sein!
        startPeriodIndex - StartPeriodIndex
        scriptName - Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.
        userInfo -
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException - Fehler bei der Kommunikation mit der Konfiguration.
    • Method Detail

      • init

        public void init()
                  throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
        Erzeugt zu jedem Element ein Objekt zum Typ RealOnlineElement und startet den Thread. Diese melden sich beim Datenverteiler als Empfänger für Online-Daten an. Falls es zu einem Fehler beim anmelden als Empfänger beim Dav kommt, wird der Thread nicht gestartet, und ProcessingBuffer.abort() aufgerufen.
        Specified by:
        init in class ProcessingBuffer
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException - Fehler.
        See Also:
        ProcessingBuffer.init()
      • getStartTime

        public long getStartTime()
        Gibt dem Zeitpunkt zurück, an dem der Online ProcessingBuffer mit dem Sammeln der Daten begonnen hat.
        Returns:
        Zeitpunkt ab dem Daten gesammelt werden.
      • getMillisToEndOfInterval

        protected long getMillisToEndOfInterval()
        Berechnet die Zeit bis zum Ende des nächsten Intervalls.
        Returns:
        Zeit
      • processNewData

        protected void processNewData​(ValueProvider[] elements,
                                      java.util.ArrayList<ValueProvider> winners)
                               throws de.bsvrz.sys.funclib.losb.exceptions.FailureException,
                                      java.lang.InterruptedException
        XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.
        Specified by:
        processNewData in class ProcessingBuffer
        Parameters:
        elements - Liste aller Datenlieferanten.
        winners - Rückgabe: Liste der Datensätze mit minimalem, nicht aufgefüllten Datenzeitstempel. (Es sollte eine leere ArrayList übergeben werden)
        Throws:
        de.bsvrz.sys.funclib.losb.exceptions.FailureException - Fehler bei der Aufbereitung.
        java.lang.InterruptedException - Aufbereitung wurde unterbrochen.
        See Also:
        ProcessingBuffer.processNewData(ValueProvider[], ArrayList)