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.
  • 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, liefert push(Object, long, long) false
  • Method Details

    • push

      public boolean push​(java.lang.Object elem, long time, long timeout) throws java.lang.InterruptedException
      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
      Throws:
      java.lang.InterruptedException
    • 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>