org.rrd4j.core
Class RobinArray

java.lang.Object
  extended by org.rrd4j.core.RobinArray
All Implemented Interfaces:
Robin

public 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.


Method Summary
 void bulkStore(double newValue, int bulkCount)
           
 void copyStateTo(org.rrd4j.core.RrdUpdater other)
          Copies object's internal state to another Robin object.
 String dump()
           
 void filterValues(double minValue, double maxValue)
          Filters values stored in this archive based on the given boundary.
 Archive getParent()
          Returns the Archive object to which this Robin object belongs.
 org.rrd4j.core.RrdAllocator getRrdAllocator()
          Required to implement RrdUpdater interface.
 RrdBackend getRrdBackend()
          Returns the underlying storage (backend) object which actually performs all I/O operations.
 int getSize()
          Returns the size of the underlying array of archived values.
 double getValue(int index)
          Returns the i-th value from the Robin archive.
 double[] getValues()
          Fetches all archived values.
 double[] getValues(int index, int count)
           
 void setValue(int index, double value)
          Sets the i-th value in the Robin archive.
 void setValues(double... newValues)
          Updates archived values in bulk.
 void setValues(double newValue)
          (Re)sets all values in this archive to the same value.
 void store(double newValue)
           
 void update(double[] newValues)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getValues

public double[] getValues()
                   throws IOException
Description copied from interface: Robin
Fetches all archived values.

Specified by:
getValues in interface Robin
Returns:
Array of double archive values, starting from the oldest one.
Throws:
IOException - Thrown in case of I/O specific error.

store

public void store(double newValue)
           throws IOException
Specified by:
store in interface Robin
Throws:
IOException

bulkStore

public void bulkStore(double newValue,
                      int bulkCount)
               throws IOException
Specified by:
bulkStore in interface Robin
Throws:
IOException

update

public void update(double[] newValues)
            throws IOException
Specified by:
update in interface Robin
Throws:
IOException

setValues

public void setValues(double... newValues)
               throws IOException
Description copied from interface: Robin
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
Description copied from interface: Robin
(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

dump

public String dump()
            throws IOException
Specified by:
dump in interface Robin
Throws:
IOException

getValue

public double getValue(int index)
                throws IOException
Description copied from interface: Robin
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
Description copied from interface: Robin
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
Specified by:
getValues in interface Robin
Throws:
IOException

getParent

public Archive getParent()
Description copied from interface: Robin
Returns the Archive object to which this Robin object belongs.

Specified by:
getParent in interface Robin
Returns:
Parent Archive object

getSize

public int getSize()
Description copied from interface: Robin
Returns the size of the underlying array of archived values.

Specified by:
getSize in interface Robin
Returns:
Number of stored values

copyStateTo

public void copyStateTo(org.rrd4j.core.RrdUpdater other)
                 throws IOException
Description copied from interface: Robin
Copies object's internal state to another Robin object.

Specified by:
copyStateTo in interface Robin
Parameters:
other - New Robin object to copy state to
Throws:
IOException - Thrown in case of I/O error

filterValues

public void filterValues(double minValue,
                         double maxValue)
                  throws IOException
Description copied from interface: Robin
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

getRrdBackend

public RrdBackend getRrdBackend()
Description copied from interface: Robin
Returns the underlying storage (backend) object which actually performs all I/O operations.

Specified by:
getRrdBackend in interface Robin
Returns:
I/O backend object

getRrdAllocator

public org.rrd4j.core.RrdAllocator getRrdAllocator()
Description copied from interface: Robin
Required to implement RrdUpdater interface. You should never call this method directly.

Specified by:
getRrdAllocator in interface Robin
Returns:
Allocator object