Class Robin

  • All Implemented Interfaces:
    RrdUpdater

    public class Robin
    extends Object
    implements RrdUpdater
    Class to represent archive values for a single datasource. Robin class is the heart of the so-called "round robin database" concept. Basically, each Robin object is a fixed length array of double values. Each double value reperesents consolidated, archived value for the specific timestamp. When the underlying array of double values gets completely filled, new values will replace the oldest ones.

    Robin object does not hold values in memory - such object could be quite large. Instead of it, Robin reads them from the backend I/O only when necessary.

    Author:
    Sasa Markovic
    • Constructor Summary

      Constructors 
      Constructor Description
      Robin​(Archive parentArc, int rows, boolean shouldInitialize)  
    • Method Detail

      • getValues

        public double[] getValues()
                           throws IOException
        Fetches all archived values.
        Returns:
        Array of double archive values, starting from the oldest one.
        Throws:
        IOException - Thrown in case of I/O specific error.
      • setValues

        public void setValues​(double[] newValues)
                       throws IOException,
                              RrdException
        Updates archived values in bulk.
        Parameters:
        newValues - Array of double values to be stored in the archive
        Throws:
        IOException - Thrown in case of I/O error
        RrdException - Thrown if the length of the input array is different from the length of this archive
      • setValues

        public void setValues​(double newValue)
                       throws IOException
        (Re)sets all values in this archive to the same value.
        Parameters:
        newValue - New value
        Throws:
        IOException - Thrown in case of I/O error
      • getValue

        public double getValue​(int index)
                        throws IOException
        Returns the i-th value from the Robin archive.
        Parameters:
        index - Value index
        Returns:
        Value stored in the i-th position (the oldest value has zero index)
        Throws:
        IOException - Thrown in case of I/O specific error.
      • setValue

        public void setValue​(int index,
                             double value)
                      throws IOException
        Sets the i-th value in the Robin archive.
        Parameters:
        index - index in the archive (the oldest value has zero index)
        value - value to be stored
        Throws:
        IOException - Thrown in case of I/O specific error.
      • getParent

        public Archive getParent()
        Returns the Archive object to which this Robin object belongs.
        Returns:
        Parent Archive object
      • getSize

        public int getSize()
        Returns the size of the underlying array of archived values.
        Returns:
        Number of stored values
      • filterValues

        public void filterValues​(double minValue,
                                 double maxValue)
                          throws IOException
        Filters values stored in this archive based on the given boundary. Archived values found to be outside of [minValue, maxValue] interval (inclusive) will be silently replaced with NaN.
        Parameters:
        minValue - lower boundary
        maxValue - upper boundary
        Throws:
        IOException - Thrown in case of I/O error
      • getRrdBackend

        public RrdBackend getRrdBackend()
        Returns the underlying storage (backend) object which actually performs all I/O operations.
        Specified by:
        getRrdBackend in interface RrdUpdater
        Returns:
        I/O backend object
      • getRrdAllocator

        public RrdAllocator getRrdAllocator()
        Required to implement RrdUpdater interface. You should never call this method directly.
        Specified by:
        getRrdAllocator in interface RrdUpdater
        Returns:
        Allocator object