org.jrobin.core
Class RrdDbPool

java.lang.Object
  extended by org.jrobin.core.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 int INITIAL_CAPACITY
          Initial capacity of the pool i.e.
 
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(RrdDef rrdDef)
          Requests a RrdDb reference for the given RRD file definition object.
 RrdDb requestRrdDb(String path)
          Requests a RrdDb reference for the given RRD file path.
 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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.

See Also:
Constant Field Values
Method Detail

getInstance

public static RrdDbPool getInstance()
                             throws RrdException
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

requestRrdDb

public RrdDb requestRrdDb(String path)
                   throws IOException,
                          RrdException
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)
                   throws IOException,
                          RrdException
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)
                   throws IOException,
                          RrdException
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

release

public void release(RrdDb rrdDb)
             throws IOException,
                    RrdException
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

getCapacity

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

Returns:
maximum number of simultaneously open RRD files

setCapacity

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

Parameters:
capacity - Maximum number of simultaneously open RRD files.

getOpenFiles

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

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

getOpenFileCount

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

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


Copyright 2003-2008. All Rights Reserved.