org.rrd4j.core
Class RrdBackendFactory

java.lang.Object
  extended by org.rrd4j.core.RrdBackendFactory
Direct Known Subclasses:
RrdBerkeleyDbBackendFactory, RrdFileBackendFactory, RrdMemoryBackendFactory, RrdMongoDBBackendFactory

public abstract class RrdBackendFactory
extends Object

Base (abstract) backend factory class which holds references to all concrete backend factories and defines abstract methods which must be implemented in all concrete factory implementations.

Factory classes are used to create concrete RrdBackend implementations. Each factory creates unlimited number of specific backend objects. Rrd4j supports four different backend types (backend factories) out of the box:

Each backend factory is identified by its name. Constructors are provided in the RrdDb class to create RrdDb objects (RRD databases) backed with a specific backend.

See javadoc for RrdBackend to find out how to create your custom backends.


Constructor Summary
RrdBackendFactory()
           
 
Method Summary
protected abstract  boolean exists(String path)
          Determines if a storage with the given path already exists.
static RrdBackendFactory getDefaultFactory()
          Returns the default backend factory.
static RrdBackendFactory getFactory(String name)
          Returns backend factory for the given backend factory name.
abstract  String getName()
          Returns the name (primary ID) for the factory.
protected abstract  RrdBackend open(String path, boolean readOnly)
          Creates RrdBackend object for the given storage path.
static void registerAndSetAsDefaultFactory(RrdBackendFactory factory)
          Registers new (custom) backend factory within the Rrd4j framework and sets this factory as the default.
static void registerFactory(RrdBackendFactory factory)
          Registers new (custom) backend factory within the Rrd4j framework.
static void setDefaultFactory(String factoryName)
          Replaces the default backend factory with a new one.
protected abstract  boolean shouldValidateHeader(String path)
          Determines if the header should be validated.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RrdBackendFactory

public RrdBackendFactory()
Method Detail

getFactory

public static RrdBackendFactory getFactory(String name)
Returns backend factory for the given backend factory name.

Parameters:
name - Backend factory name. Initially supported names are:

  • FILE: Default factory which creates backends based on the java.io.* package. RRD data is stored in files on the disk
  • SAFE: Default factory which creates backends based on the java.io.* package. RRD data is stored in files on the disk. This backend is "safe". Being safe means that RRD files can be safely shared between several JVM's.
  • NIO: Factory which creates backends based on the java.nio.* package. RRD data is stored in files on the disk
  • MEMORY: Factory which creates memory-oriented backends. RRD data is stored in memory, it gets lost as soon as JVM exits.
Returns:
Backend factory for the given factory name

registerFactory

public static void registerFactory(RrdBackendFactory factory)
Registers new (custom) backend factory within the Rrd4j framework.

Parameters:
factory - Factory to be registered

registerAndSetAsDefaultFactory

public static void registerAndSetAsDefaultFactory(RrdBackendFactory factory)
Registers new (custom) backend factory within the Rrd4j framework and sets this factory as the default.

Parameters:
factory - Factory to be registered and set as default

getDefaultFactory

public static RrdBackendFactory getDefaultFactory()
Returns the default backend factory. This factory is used to construct RrdDb objects if no factory is specified in the RrdDb constructor.

Returns:
Default backend factory.

setDefaultFactory

public static void setDefaultFactory(String factoryName)
Replaces the default backend factory with a new one. This method must be called before the first RRD gets created.

Parameters:
factoryName - Name of the default factory. Out of the box, Rrd4j supports four different RRD backends: "FILE" (java.io.* based), "SAFE" (java.io.* based - use this backend if RRD files may be accessed from several JVMs at the same time), "NIO" (java.nio.* based) and "MEMORY" (byte[] based).

open

protected abstract RrdBackend open(String path,
                                   boolean readOnly)
                            throws IOException
Creates RrdBackend object for the given storage path.

Parameters:
path - Storage path
readOnly - True, if the storage should be accessed in read/only mode. False otherwise.
Returns:
Backend object which handles all I/O operations for the given storage path
Throws:
IOException - Thrown in case of I/O error.

exists

protected abstract boolean exists(String path)
                           throws IOException
Determines if a storage with the given path already exists.

Parameters:
path - Storage path
Returns:
True, if such storage exists, false otherwise.
Throws:
IOException

shouldValidateHeader

protected abstract boolean shouldValidateHeader(String path)
                                         throws IOException
Determines if the header should be validated.

Parameters:
path - Storage path
Returns:
True, if the header should be validated for this factory
Throws:
IOException - if header validation fails

getName

public abstract String getName()
Returns the name (primary ID) for the factory.

Returns:
Name of the factory.


Copyright © 2011. All Rights Reserved.