Class ArchiveRingBuffer
java.lang.Object
de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer<ArchiveRingBuffer.PopObject>
de.bsvrz.sys.funclib.losb.ringbuffer.ArchiveRingBuffer
public class ArchiveRingBuffer extends RingBuffer<ArchiveRingBuffer.PopObject>
Diese Klasse führt einen zweiten Ringpuffer, um neben dem einzufügenden Objekt auch den Einfügezeitpunkt festzuhalten (für die Archivzeit). Sinn
dieser Klasse ist es, staendiges erzeugen und loeschen von Objekten zu vermeiden. Dies wäre der Fall, wenn man jedesmal ein Objekt erzeugt, das das
Wertepaar enthält.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
ArchiveRingBuffer.PopObject
Mit dieser Klasse kann man Paare in einem Aufruf aus dem Ringpuffer poppen. -
Field Summary
Fields inherited from class de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer
buf, chunkSize, firstElem, isEmpty, lastElem, maxSize, MIN_CHUNK_SIZE, noOfChunks, UNBOUNDED_SIZE
-
Constructor Summary
Constructors Constructor Description ArchiveRingBuffer(int chunkSize, int mxsize)
-
Method Summary
Modifier and Type Method Description protected void
copy2NewArray(int newSize)
void
pop(ArchiveRingBuffer.PopObject pobj)
Fügt die ersten Element der beiden Warteschlange in das uebergebene PopObject ein.boolean
push(java.lang.Object elem, long time, long timeout)
Fügt ein Objekt in die Warteschlange an letzter Stelle ein.Methods inherited from class de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer
adjustSizePostDecr, adjustSizePreIncr, changeMaxSize, getLast, isEmpty, isFirstElemOneAheadOfLastElem, isFull, maxSize, next, oneStepFurther, peek, pop, pop, popNoWait, push, size, status, toArray
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
ArchiveRingBuffer
public ArchiveRingBuffer(int chunkSize, int mxsize)- Parameters:
chunkSize
- : Größe der Blöcke, um die das Feld der Warteschlange wächst und schrumpft.mxsize
- : Maximale Groesse der Warteschlange. Wird diese ueberschritten, liefertpush(Object, long, long)
false
-
-
Method Details
-
push
public boolean push(java.lang.Object elem, long time, long timeout) throws java.lang.InterruptedExceptionFügt ein Objekt in die Warteschlange an letzter Stelle ein. Ein Thread, der in pop() wartet, wird fortgesetzt.- Parameters:
elem
- : Einzufügendes Objekttime
- : Einfügezeitpunkt- Returns:
- Wahr, wenn Platz in der Queue war und das Datum eingefuegt wurde, falsch sonst
- Throws:
java.lang.InterruptedException
-
pop
Fügt die ersten Element der beiden Warteschlange in das uebergebene PopObject ein. Dieses Objekt muss vorher angelegt worden sein und wird nur zur Uebergabe der beiden Werte verwendet. Wenn die Warteschlange leer ist, blockiert der aufrufende Thread bis zum nächsten pop()-Aufruf.- Parameters:
pobj
- : vorher zu erzeugendes Objekt zur Übergabe der Werte.- Throws:
java.lang.InterruptedException
-
copy2NewArray
protected void copy2NewArray(int newSize)- Overrides:
copy2NewArray
in classRingBuffer<ArchiveRingBuffer.PopObject>
-