public class OnlineBuffer extends ProcessingBuffer
init()
aufgerufen werden. Dadurch werden Objekte erzeugt, die sich beim DAV als Empfänger für Online-Daten anmelden._buffer, _bufferResult, _connection, _dataSetBuilder, _debug, _done, _periods, _processingInformation, _realElements, _tempElements, INITIAL_RINGBUFFER_SIZE
Constructor and Description |
---|
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)
init() sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden. |
Modifier and Type | Method and Description |
---|---|
boolean |
applyAggregations(java.util.List<BaseDataSet> baseData)
Online Daten werden nicht aggregiert.
|
protected long |
getMillisToEndOfInterval()
Berechnet die Zeit bis zum Ende des nächsten Intervalls.
|
long |
getStartTime()
Gibt dem Zeitpunkt zurück, an dem der Online ProcessingBuffer mit dem Sammeln der Daten begonnen hat.
|
boolean |
hasData()
Zeigt an ob Daten abgeholt werden können.
|
void |
init()
Erzeugt zu jedem Element ein Objekt zum Typ
RealOnlineElement und startet den Thread. |
boolean |
isDone()
Zeigt ob der Buffer noch weitere Daten liefern wird.
|
protected boolean |
isDoneCollecting()
Überprüft, ob das Ende der zu überprüfenden Zeitbereiche erreicht ist und alle Daten übertragen wurden.
|
protected boolean |
isListAggregation()
Liefert immer false zurück.
|
protected void |
processNewData(ValueProvider[] elements,
java.util.ArrayList<ValueProvider> winners)
XXX MH: Merge sollte schon im Konstruktor von imdsBuffer festgelegt werden.
|
void |
storeAggregatedData(byte status)
Online gesammelte Daten werden nicht aggregiert.
|
abort, applyPostFilter, getInsertEmpty, getProtocolType, getResult, getScriptName, getTimeStampOrigin, getWinners, isAbort, isAggregate, nextInterval, notifyProcessor, run, setAggregate, setDone, setTempAttributes, size, storeDataSet, take
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
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) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
init()
sollte unverzüglich nach Erzeugen des Objekts aufgerufen werden.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!scriptName
- Bezeichnung des Skripts zur Verwendung in Fehlerausgaben.startPeriodIndex
- StartPeriodIndexde.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Kommunikation mit der Konfiguration.public void init() throws de.bsvrz.sys.funclib.losb.exceptions.FailureException
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.init
in class ProcessingBuffer
de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler.ProcessingBuffer.init()
public long getStartTime()
public boolean applyAggregations(java.util.List<BaseDataSet> baseData)
true
zurück.applyAggregations
in class ProcessingBuffer
baseData
- Werte des Ausgangsdatensatz. Einträge können von der Methode geändert werden.true
ProcessingBuffer.applyAggregations(List)
public boolean hasData()
ProcessingBuffer
hasData
in class ProcessingBuffer
true
falls Daten mittels ProcessingBuffer.take()
abgeholt werden können.ProcessingBuffer.hasData()
protected boolean isDoneCollecting()
isDoneCollecting
in class ProcessingBuffer
true
falls alle Daten abgefragt wurden.ProcessingBuffer.isDoneCollecting()
public boolean isDone()
ProcessingBuffer
isDone
in class ProcessingBuffer
true
falls noch weitere Daten zu erwarten sind.ProcessingBuffer.isDone()
protected boolean isListAggregation()
isListAggregation
in class ProcessingBuffer
true
falls Liste
eine der ausgewählten die Aggregationsanwendungen ist.ProcessingBuffer.isListAggregation()
public void storeAggregatedData(byte status)
storeAggregatedData
in class ProcessingBuffer
status
- Status, den der Aggregationsdatensatz erhalten soll.ProcessingBuffer.storeAggregatedData(byte)
protected long getMillisToEndOfInterval()
protected void processNewData(ValueProvider[] elements, java.util.ArrayList<ValueProvider> winners) throws de.bsvrz.sys.funclib.losb.exceptions.FailureException, java.lang.InterruptedException
processNewData
in class ProcessingBuffer
elements
- Liste aller Datenlieferanten.winners
- Rückgabe: Liste der Datensätze mit minimalem, nicht aufgefüllten Datenzeitstempel. (Es sollte eine leere ArrayList übergeben werden)de.bsvrz.sys.funclib.losb.exceptions.FailureException
- Fehler bei der Aufbereitung.java.lang.InterruptedException
- Aufbereitung wurde unterbrochen.ProcessingBuffer.processNewData(ValueProvider[], ArrayList)