de.bsvrz.sys.funclib.losb.ringbuffer
Class ArchiveRingBuffer

java.lang.Object
  extended by de.bsvrz.sys.funclib.losb.ringbuffer.RingBuffer<ArchiveRingBuffer.PopObject>
      extended by 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
 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
ArchiveRingBuffer(int chunkSize, int mxsize)
           
 
Method Summary
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)
          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 Detail

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, liefert #push(E) false
Method Detail

push

public boolean push(java.lang.Object elem,
                    long time)
Fügt ein Objekt in die Warteschlange an letzter Stelle ein. Ein Thread, der in pop() wartet, wird fortgesetzt.

Parameters:
elem: - Einzufügendes Objekt
time: - Einfügezeitpunkt
Returns:
Wahr, wenn Platz in der Queue war und das Datum eingefuegt wurde, falsch sonst

pop

public void pop(ArchiveRingBuffer.PopObject pobj)
         throws java.lang.InterruptedException
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 class RingBuffer<ArchiveRingBuffer.PopObject>


Copyright © 2005-2008 beck et al. projects GmbH All Rights Reserved.