Package org.jcsp.util

Class OverFlowingBuffer<T>

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private T[] buffer
      The storage for the buffered Objects
      private int counter
      The number of Objects stored in the Buffer
      private int firstIndex
      The index of the oldest element (when counter > 0)
      private int lastIndex
      The index of the next free element (when counter < buffer.length)
    • Constructor Summary

      Constructors 
      Constructor Description
      OverFlowingBuffer​(int size)
      Construct a new OverFlowingBuffer with the specified size.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object clone()
      Returns a new (and EMPTY) OverFlowingBuffer with the same creation parameters as this one.
      void endGet()
      Removes the oldest object from the buffer.
      T get()
      Returns the oldest Object from the OverFlowingBuffer and removes it.
      int getState()
      Returns the current state of the OverFlowingBuffer.
      void put​(T value)
      Puts a new Object into the OverFlowingBuffer.
      void removeAll()
      Deletes all items in the buffer, leaving it empty.
      T startGet()
      Returns the oldest object from the buffer but does not remove it.
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • buffer

        private final T[] buffer
        The storage for the buffered Objects
      • counter

        private int counter
        The number of Objects stored in the Buffer
      • firstIndex

        private int firstIndex
        The index of the oldest element (when counter > 0)
      • lastIndex

        private int lastIndex
        The index of the next free element (when counter < buffer.length)
    • Constructor Detail

      • OverFlowingBuffer

        public OverFlowingBuffer​(int size)
        Construct a new OverFlowingBuffer with the specified size.
        Parameters:
        size - the number of Objects the OverFlowingBuffer can store.
        Throws:
        BufferSizeError - if size is zero or negative. Note: no action should be taken to try/catch this exception - application code generating it is in error and needs correcting.
    • Method Detail

      • get

        public T get()
        Returns the oldest Object from the OverFlowingBuffer and removes it.

        Pre-condition: getState must not currently return EMPTY.

        Specified by:
        get in interface ChannelDataStore<T>
        Returns:
        the oldest Object from the OverFlowingBuffer
      • startGet

        public T startGet()
        Returns the oldest object from the buffer but does not remove it. Pre-condition: getState must not currently return EMPTY.
        Specified by:
        startGet in interface ChannelDataStore<T>
        Returns:
        the oldest Object from the Buffer
        See Also:
        ChannelDataStore.endGet()
      • put

        public void put​(T value)
        Puts a new Object into the OverFlowingBuffer.

        If OverFlowingBuffer is full, the item is discarded.

        Specified by:
        put in interface ChannelDataStore<T>
        Parameters:
        value - the Object to put into the OverFlowingBuffer
      • getState

        public int getState()
        Returns the current state of the OverFlowingBuffer.
        Specified by:
        getState in interface ChannelDataStore<T>
        Returns:
        the current state of the OverFlowingBuffer (EMPTY or NONEMPTYFULL)
      • clone

        public java.lang.Object clone()
        Returns a new (and EMPTY) OverFlowingBuffer with the same creation parameters as this one.

        Note: Only the size and structure of the OverFlowingBuffer is cloned, not any stored data.

        Specified by:
        clone in interface ChannelDataStore<T>
        Overrides:
        clone in class java.lang.Object
        Returns:
        the cloned instance of this OverFlowingBuffer.