public class OnlineBuffer extends ProcessingBuffer
init()
aufgerufen werden. Dadurch werden Objekte erzeugt, die sich beim DAV als Empfänger für Online-Daten anmelden.Modifier and Type | Field and Description |
---|---|
private int |
_countedIntervals
Intervalle, für die
ProcessingBuffer.nextInterval(long) bereits aufgerufen wurde. |
private boolean |
_doneCollecting
Zeigt an ob die Datensammlung abgeschlossen ist.
|
private long |
_doneSubscribing
Zeitpunkt, an dem sich der Online ProcessingBuffer auf alle Datenidentifikationen angemeldet hat.
|
private boolean |
_lastIntervalReached
Zeigt an ob der Zeitpunkt des letzten Intervalls überschritten wurde.
|
private long |
_lastTimeStamp |
private NewDataCollector |
_newDataColllector
Objekt das den Eingang von neuen Daten überwacht.
|
private OnlineDataReceiverSet |
_receiverSet
Objekt das die Empfänger verwaltet.
|
_buffer, _bufferResult, _connection, _dataSetBuilder, _debug, _done, _periods, _processingInformation, _realElements, _tempElements, INITIAL_RINGBUFFER_SIZE
Constructor and Description |
---|
OnlineBuffer(ClientDavInterface dav,
ProcessingInterface processor,
ProcessingInformation pi,
java.util.List<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.
|
private boolean |
checkPeriod()
Überprüft ob bereits ein neues Intervall angebrochen wurde.
|
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.
|
private boolean |
waitForNewData()
Wartet, bis neue Daten eingehen, oder das Ende eines Protokoll-Intervalls erreicht wurde.
|
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
private long _doneSubscribing
private boolean _doneCollecting
private int _countedIntervals
ProcessingBuffer.nextInterval(long)
bereits aufgerufen wurde.private NewDataCollector _newDataColllector
private OnlineDataReceiverSet _receiverSet
private boolean _lastIntervalReached
private long _lastTimeStamp
public OnlineBuffer(ClientDavInterface dav, ProcessingInterface processor, ProcessingInformation pi, java.util.List<Tuple<java.lang.Long,java.lang.Long>> periods, int startPeriodIndex, java.lang.String scriptName) throws 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.FailureException
- Fehler bei der Kommunikation mit der Konfiguration.public void init() throws 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
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
de.bsvrz.pua.prot.processing.ProcessingBuffer#applyAggregations(java.util.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()
private boolean checkPeriod()
true
falls das letzte Intervall zeitlich bereits überschritten.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 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)FailureException
- Fehler bei der Aufbereitung.java.lang.InterruptedException
- Aufbereitung wurde unterbrochen.de.bsvrz.pua.prot.processing.ProcessingBuffer#processNewData(de.bsvrz.pua.prot.processing.ValueProvider[],java.util.ArrayList
private boolean waitForNewData() throws java.lang.InterruptedException
true
falls neue Daten eingegangen sind.java.lang.InterruptedException