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)
Method Summary |
int | getCapacity()
Returns the maximum number of simultaneously open RRD files.
|
static RrdDbPool | getInstance()
Creates a single instance of the class on the first call, or returns already existing one.
|
int | getOpenFileCount()
Returns the number of open RRD files.
|
String[] | getOpenFiles()
Returns an array of open file names.
|
void | release(RrdDb rrdDb)
Releases RrdDb reference previously obtained from the pool. |
RrdDb | requestRrdDb(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.
|
RrdDb | requestRrdDb(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.
|
RrdDb | requestRrdDb(String path, String sourcePath)
Requests a RrdDb reference for the given path. |
void | setCapacity(int capacity)
Sets the maximum number of simultaneously open RRD files.
|
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.
public int getCapacity()
Returns the maximum number of simultaneously open RRD files.
Returns: maximum number of simultaneously open RRD files
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
public int getOpenFileCount()
Returns the number of open RRD files.
Returns: Number of currently open RRD files held in the pool.
public String[] getOpenFiles()
Returns an array of open file names.
Returns: Array with canonical paths to open RRD files held in the pool.
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
public
RrdDb requestRrdDb(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. Its usage count
will be incremented by one.
- If the file is not already open and the number of already open RRD files is less than
INITIAL_CAPACITY, the file will be open and a new RrdDb reference will be returned.
If the file is not already open and the number of already open RRD files is equal to
INITIAL_CAPACITY, the method blocks until some RRD file is closed.
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
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.
- If the file is not already open and the number of already open RRD files is less than
INITIAL_CAPACITY, a new RRD file will be created and a its RrdDb reference will be returned.
If the file is not already open and the number of already open RRD files is equal to
INITIAL_CAPACITY, the method blocks until some RRD file is closed.
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
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).
- If the file with the path specified is already open,
the method blocks until the file is closed.
- If the file is not already open and the number of already open RRD files is less than
INITIAL_CAPACITY, a new RRD file will be created and a its RrdDb reference will be returned.
If the file is not already open and the number of already open RRD files is equal to
INITIAL_CAPACITY, the method blocks until some RRD file is closed.
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
public void setCapacity(int capacity)
Sets the maximum number of simultaneously open RRD files.
Parameters: capacity Maximum number of simultaneously open RRD files.