Class ArchiveRingBuffer
java.lang.Object
de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer<ArchiveRingBuffer.PopObject>
de.bsvrz.sys.funclib.losb.ringbuffer.ArchiveRingBuffer
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 ClassesModifier and TypeClassDescriptionclass
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 -
Method Summary
Modifier and TypeMethodDescriptionprotected void
copy2NewArray
(int newSize) void
Fügt die ersten Element der beiden Warteschlange in das uebergebene PopObject ein.boolean
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
-
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
Fü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:
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:
InterruptedException
-
copy2NewArray
protected void copy2NewArray(int newSize) - Overrides:
copy2NewArray
in classRingBuffer<ArchiveRingBuffer.PopObject>
-