Class RobinArray

  • All Implemented Interfaces:
    Robin, RrdUpdater<Robin>

    class RobinArray
    extends Object
    implements Robin
    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 represents 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
    • Method Detail

      • getValues

        public double[] getValues()
                           throws IOException

        Getter for the field values.

        Specified by:
        getValues in interface Robin
        Returns:
        an array of double.
        Throws:
        IOException - if any.
      • store

        public void store​(double newValue)
                   throws IOException

        store.

        Specified by:
        store in interface Robin
        Parameters:
        newValue - a double.
        Throws:
        IOException - if any.
      • bulkStore

        public void bulkStore​(double newValue,
                              int bulkCount)
                       throws IOException

        bulkStore.

        Specified by:
        bulkStore in interface Robin
        Parameters:
        newValue - a double.
        bulkCount - a int.
        Throws:
        IOException - if any.
      • update

        public void update​(double[] newValues)
                    throws IOException

        update.

        Specified by:
        update in interface Robin
        Parameters:
        newValues - an array of double.
        Throws:
        IOException - if any.
      • setValues

        public void setValues​(double... newValues)
                       throws IOException
        Updates archived values in bulk.
        Specified by:
        setValues in interface Robin
        Parameters:
        newValues - Array of double values to be stored in the archive
        Throws:
        IOException - Thrown in case of I/O error
      • setValues

        public void setValues​(double newValue)
                       throws IOException
        (Re)sets all values in this archive to the same value.
        Specified by:
        setValues in interface Robin
        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.
        Specified by:
        getValue in interface Robin
        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.
        Specified by:
        setValue in interface Robin
        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.
      • getValues

        public double[] getValues​(int index,
                                  int count)
                           throws IOException

        getValues.

        Specified by:
        getValues in interface Robin
        Parameters:
        index - a int.
        count - a int.
        Returns:
        an array of double.
        Throws:
        IOException - if any.
      • getSize

        public int getSize()

        getSize.

        Specified by:
        getSize in interface Robin
        Returns:
        a int.
      • 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.
        Specified by:
        filterValues in interface Robin
        Parameters:
        minValue - lower boundary
        maxValue - upper boundary
        Throws:
        IOException - Thrown in case of I/O error