Class JniRrdStrategy

  • All Implemented Interfaces:
    RrdStrategy<JniRrdStrategy.CreateCommand,​StringBuffer>

    public class JniRrdStrategy
    extends AbstractJniRrdStrategy<JniRrdStrategy.CreateCommand,​StringBuffer>
    Provides an rrdtool based implementation of RrdStrategy. It uses the existing JNI based single-threaded interface to write the rrdtool compatible RRD files. The JNI interface takes command-like arguments and doesn't provide open files so the the Objects used to represent open files are really partial command strings See the individual methods for more details
    Version:
    $Id: $
    Author:
    ranger
    • Constructor Detail

      • JniRrdStrategy

        public JniRrdStrategy()
                       throws Exception
        Initialized the JNI Interface
        Throws:
        Exception - if any.
    • Method Detail

      • getConfigurationProperties

        public Properties getConfigurationProperties()

        getConfigurationProperties

        Returns:
        a Properties object.
      • setConfigurationProperties

        public void setConfigurationProperties​(Properties configurationParameters)

        setConfigurationProperties

        Parameters:
        configurationParameters - a Properties object.
      • closeFile

        public void closeFile​(StringBuffer rrd)
                       throws Exception
        The 'closes' the rrd file. This is where the actual work of writing the RRD files takes place. The passed in rrd is actually an rrd command string containing updates. This method executes this command.
        Parameters:
        rrd - a StringBuffer object.
        Throws:
        Exception - if any.
      • createDefinition

        public JniRrdStrategy.CreateCommand createDefinition​(String creator,
                                                             String directory,
                                                             String rrdName,
                                                             int step,
                                                             List<RrdDataSource> dataSources,
                                                             List<String> rraList)
                                                      throws Exception
        Create a round robin database definition from the supplied parameters. This definition is used in the createFile call to create the actual file.
        Parameters:
        creator - - A string representing who is creating this file for use in log msgs
        directory - - The directory to create the file in
        rrdName - - The name to use for the round robin database
        step - - the step for the database
        dataSources - - the data sources to use for round robin database
        rraList - - a List of the round robin archives to create in the database. defines after which time the data is condensed to a defined lower step
        Returns:
        an object representing the definition of an round robin database. Can be null if the database exists already.
        Throws:
        Exception - If an error occurs while creating the definition
      • createFile

        public void createFile​(JniRrdStrategy.CreateCommand createCommand)
                        throws Exception
        Creates a the rrd file from the rrdDefinition. Since this definition is really just the create command string it just executes it.
        Parameters:
        createCommand - a String object.
        Throws:
        Exception - if any.
      • openFile

        public StringBuffer openFile​(String fileName)
                              throws Exception
        Opens the round robin database with the supplied name. It is assumed the name refers to a round robin database appropriate for this strategy implementation The 'opens' the given rrd file. In actuality since the JNI interface does not provide files that may be open, this constructs the beginning portion of the rrd command to update the file.
        Parameters:
        fileName - the name of the associated rrd file
        Returns:
        an open rrd reference that can by used in calls to updateFile and closeFile
        Throws:
        Exception - if an error occurs opening the file
      • updateFile

        public void updateFile​(StringBuffer rrd,
                               String owner,
                               String data)
                        throws Exception
        Updates the supplied round robin database with the given timestamp:value point This 'updates' the given rrd file by providing data. Since the JNI interface does not provide files that can be open, this just appends the data to the command string constructed so far. The data is not immediately written to the file since this would eliminate the possibility of getting performance benefit by doing more than one write per open. The updates are all performed at once in the closeFile method.
        Parameters:
        rrd - an rrd object created using openFile
        owner - the owner of the rrd
        data - a string of the form :
        Throws:
        Exception - if an error occurs updating the file
      • fetchLastValue

        public Double fetchLastValue​(String rrdFile,
                                     String ds,
                                     int interval)
                              throws NumberFormatException,
                                     RrdException
        Fetches the last value from the round robin database with the given name. The interval passed in should be the interval associated with the round robin database. Fetches the last value directly from the rrd file using the JNI Interface.
        Parameters:
        rrdFile - a name the represents a round robin database
        ds - a name the represents a data source to be used
        interval - a step interval of the round robin database
        Returns:
        The last value as a Double (if the last value didn't exist returns a Double.NaN)
        Throws:
        NumberFormatException - if any.
        RrdException - if any.
      • fetchLastValue

        public Double fetchLastValue​(String rrdFile,
                                     String ds,
                                     String consolidationFunction,
                                     int interval)
        Fetches the last value from the round robin database with the given name. The interval passed in should be the interval associated with the round robin database.
        Parameters:
        rrdFile - a name the represents a round robin database
        ds - a name the represents a data source to be used
        consolidationFunction - a String object.
        interval - a step interval of the round robin database
        Returns:
        The last value as a Double (if the last value didn't exist returns a Double.NaN)
      • fetchLastValueInRange

        public Double fetchLastValueInRange​(String rrdFile,
                                            String ds,
                                            int interval,
                                            int range)
                                     throws NumberFormatException,
                                            RrdException
        Fetches the last value from the round robin database with the given name within a time range. The interval passed in should be the interval associated with the round robin database. The range should be the amount of "lag" acceptable for an update to be considered valid. Range must be a multiple of the RRD interval.
        Parameters:
        rrdFile - a name the represents a round robin database
        ds - a name the represents a data source to be used
        interval - a step interval of the round robin database
        range - an acceptable range for which the last value will be returned
        Returns:
        The last value as a Double (if the last value didn't exist returns a Double.NaN)
        Throws:
        NumberFormatException - if any.
        RrdException - if any.