org.jrobin.core

Class Robin

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.

Method Summary
voidcopyStateTo(RrdUpdater other)
Copies object's internal state to another Robin object.
voidfilterValues(double minValue, double maxValue)
Filters values stored in this archive based on the given boundary.
ArchivegetParent()
Returns the Archive object to which this Robin object belongs.
RrdAllocatorgetRrdAllocator()
Required to implement RrdUpdater interface.
RrdBackendgetRrdBackend()
Returns the underlying storage (backend) object which actually performs all I/O operations.
intgetSize()
Returns the size of the underlying array of archived values.
doublegetValue(int index)
Returns the i-th value from the Robin archive.
double[]getValues()
Fetches all archived values.
voidsetValue(int index, double value)
Sets the i-th value in the Robin archive.
voidsetValues(double[] newValues)
Updates archived values in bulk.
voidsetValues(double newValue)
(Re)sets all values in this archive to the same value.

Method Detail

copyStateTo

public void copyStateTo(RrdUpdater other)
Copies object's internal state to another Robin object.

Parameters: other New Robin object to copy state to

Throws: IOException Thrown in case of I/O error RrdException Thrown if supplied argument is not a Robin object

filterValues

public void filterValues(double minValue, double maxValue)
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

getParent

public Archive getParent()
Returns the Archive object to which this Robin object belongs.

Returns: Parent Archive object

getRrdAllocator

public RrdAllocator getRrdAllocator()
Required to implement RrdUpdater interface. You should never call this method directly.

Returns: Allocator object

getRrdBackend

public RrdBackend getRrdBackend()
Returns the underlying storage (backend) object which actually performs all I/O operations.

Returns: I/O backend object

getSize

public int getSize()
Returns the size of the underlying array of archived values.

Returns: Number of stored values

getValue

public double getValue(int index)
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.

getValues

public double[] getValues()
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.

setValue

public void setValue(int index, double value)
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.

setValues

public void setValues(double[] newValues)
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)
(Re)sets all values in this archive to the same value.

Parameters: newValue New value

Throws: IOException Thrown in case of I/O error