Class 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 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(Object, long, long) false
    • Method Detail

      • 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