- All Superinterfaces:
RrdUpdater<Robin>
- All Known Implementing Classes:
RobinArray, RobinMatrix
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
All MethodsModifier and TypeMethodDescriptionvoidbulkStore(double newValue, int bulkCount) Appends one value repeatedly, for bulk updates.voidcopyStateTo(Robin other) Copies object's internal state to another Robin object.dump()Renders the current contents as text.voidfilterValues(double minValue, double maxValue) Filters values stored in this archive based on the given boundary.Returns the Archive object to which this Robin object belongs.Required to implement RrdUpdater interface.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[]Fetches all archived values.double[]getValues(int index, int count) Reads a run of values starting at a row index.voidsetValue(int index, double value) Sets the i-th value in the Robin archive.voidsetValues(double newValue) (Re)sets all values in this archive to the same value.voidsetValues(double... newValues) Updates archived values in bulk.voidstore(double newValue) Appends a single value at the current row pointer.voidupdate(double[] newValues) Writes a full row of values into storage.
Method Details
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.
setValues
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 errorIllegalArgumentException- Thrown if the length of the input array is different from the length of this archive
setValues
(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
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
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
Archive getParent()Returns the Archive object to which this Robin object belongs.- Returns:
- Parent Archive object
getSize
int getSize()Returns the size of the underlying array of archived values.- Returns:
- Number of stored values
copyStateTo
Copies object's internal state to another Robin object.
- Specified by:
copyStateToin interfaceRrdUpdater<Robin>- Parameters:
other- aRrdUpdaterobject.- Throws:
IOException- if the state cannot be read from the backend
filterValues
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 withNaN.- Parameters:
minValue- inclusive lower bound; values below it become NaNmaxValue- inclusive upper bound; values above it become NaN- Throws:
IOException- Thrown in case of I/O error
getRrdBackend
RrdBackend getRrdBackend()Returns the underlying storage (backend) object which actually performs all I/O operations.- Specified by:
getRrdBackendin interfaceRrdUpdater<Robin>- Returns:
- I/O backend object
getRrdAllocator
RrdAllocator getRrdAllocator()Required to implement RrdUpdater interface. You should never call this method directly.- Specified by:
getRrdAllocatorin interfaceRrdUpdater<Robin>- Returns:
- Allocator object
update
Writes a full row of values into storage.- Parameters:
newValues- an array of double.- Throws:
IOException- Thrown in case of I/O error
dump
Renders the current contents as text.- Returns:
- a
Stringobject. - Throws:
IOException- Thrown in case of I/O error
store
Appends a single value at the current row pointer.- Parameters:
newValue- a double.- Throws:
IOException- Thrown in case of I/O error
bulkStore
Appends one value repeatedly, for bulk updates.- Parameters:
newValue- a double.bulkCount- a int.- Throws:
IOException- Thrown in case of I/O error
getValues
Reads a run of values starting at a row index.- Parameters:
index- a int.count- a int.- Returns:
- an array of double.
- Throws:
IOException- Thrown in case of I/O error