org.jrobin.core

Class RrdDbPool

public class RrdDbPool extends Object

This class should be used to synchronize access to RRD files in a multithreaded environment. This class should be also used to prevent openning of too many RRD files at the same time (thus avoiding operating system limits)
Field Summary
static intINITIAL_CAPACITY
Initial capacity of the pool i.e. maximum number of simultaneously open RRD files.
Method Summary
intgetCapacity()
Returns the maximum number of simultaneously open RRD files.
static RrdDbPoolgetInstance()
Creates a single instance of the class on the first call, or returns already existing one.
intgetOpenFileCount()
Returns the number of open RRD files.
String[]getOpenFiles()
Returns an array of open file names.
voidrelease(RrdDb rrdDb)
Releases RrdDb reference previously obtained from the pool.
RrdDbrequestRrdDb(String path)
Requests a RrdDb reference for the given RRD file path.

  • If the file is already open, previously returned RrdDb reference will be returned.
RrdDbrequestRrdDb(RrdDef rrdDef)
Requests a RrdDb reference for the given RRD file definition object.

  • If the file with the path specified in the RrdDef object is already open, the method blocks until the file is closed.
RrdDbrequestRrdDb(String path, String sourcePath)
Requests a RrdDb reference for the given path.
voidsetCapacity(int capacity)
Sets the maximum number of simultaneously open RRD files.

Field Detail

INITIAL_CAPACITY

public static final int INITIAL_CAPACITY
Initial capacity of the pool i.e. maximum number of simultaneously open RRD files. The pool will never open too many RRD files at the same time.

Method Detail

getCapacity

public int getCapacity()
Returns the maximum number of simultaneously open RRD files.

Returns: maximum number of simultaneously open RRD files

getInstance

public static RrdDbPool getInstance()
Creates a single instance of the class on the first call, or returns already existing one.

Returns: Single instance of this class

Throws: RrdException Thrown if the default RRD backend is not derived from the RrdFileBackendFactory

getOpenFileCount

public int getOpenFileCount()
Returns the number of open RRD files.

Returns: Number of currently open RRD files held in the pool.

getOpenFiles

public String[] getOpenFiles()
Returns an array of open file names.

Returns: Array with canonical paths to open RRD files held in the pool.

release

public void release(RrdDb rrdDb)
Releases RrdDb reference previously obtained from the pool. When a reference is released, its usage count is decremented by one. If usage count drops to zero, the underlying RRD file will be closed.

Parameters: rrdDb RrdDb reference to be returned to the pool

Throws: IOException Thrown in case of I/O error RrdException Thrown in case of JRobin specific error

requestRrdDb

public RrdDb requestRrdDb(String path)
Requests a RrdDb reference for the given RRD file path.

Parameters: path Path to existing RRD file

Returns: reference for the give RRD file

Throws: IOException Thrown in case of I/O error RrdException Thrown in case of JRobin specific error

requestRrdDb

public RrdDb requestRrdDb(RrdDef rrdDef)
Requests a RrdDb reference for the given RRD file definition object.

Parameters: rrdDef Definition of the RRD file to be created

Returns: Reference to the newly created RRD file

Throws: IOException Thrown in case of I/O error RrdException Thrown in case of JRobin specific error

requestRrdDb

public RrdDb requestRrdDb(String path, String sourcePath)
Requests a RrdDb reference for the given path. The file will be created from external data (from XML dump, RRD file or RRDTool's binary RRD file).

Parameters: path Path to RRD file which should be created sourcePath Path to external data which is to be converted to JRobin's native RRD file format

Returns: Reference to the newly created RRD file

Throws: IOException Thrown in case of I/O error RrdException Thrown in case of JRobin specific error

setCapacity

public void setCapacity(int capacity)
Sets the maximum number of simultaneously open RRD files.

Parameters: capacity Maximum number of simultaneously open RRD files.