org.rrd4j.core

## Class RrdSafeFileBackend

- java.lang.Object
- - org.rrd4j.core.RrdBackend
  - - org.rrd4j.core.RrdRandomAccessFileBackend
    - - org.rrd4j.core.RrdSafeFileBackend

- All Implemented Interfaces:
    RrdFileBackend

      public class RrdSafeFileBackend
      extends RrdRandomAccessFileBackend

  Backend which is used to store RRD data to ordinary files on the disk, using locking. This backend is SAFE: it locks the underlying RRD file during update/fetch operations, and caches only static parts of a RRD file in memory. Therefore, this backend is safe to be used when RRD files should be shared between several JVMs at the same time. However, this backend is a little bit slow since it does not use fast java.nio.* package (it's still based on the RandomAccessFile class).

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) static class` | `RrdSafeFileBackend.Counters` Internal counters for tracking file locking operations.

  - ### Field Summary

    - ### Fields inherited from class org.rrd4j.core.RrdRandomAccessFileBackend

      `rafile`

    - ### Fields inherited from class org.rrd4j.core.RrdBackend

      `BYTEORDER`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RrdSafeFileBackend(String path, long lockWaitTime, long lockRetryPeriod)` Creates RrdFileBackend object for the given file path, backed by RandomAccessFile object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` close.
    `static String` | `getLockInfo()` getLockInfo.

    - ### Methods inherited from class org.rrd4j.core.RrdRandomAccessFileBackend

      `getCanonicalPath, getLength, read, setLength, write`

    - ### Methods inherited from class org.rrd4j.core.RrdBackend

      `done, getCharBuffer, getFactory, getPath, getUri, isCachingAllowed, isInstanceCreated, readAll, readDouble, readDouble, readInt, readLong, readShort, readString, rrdClose, writeDouble, writeDouble, writeDouble, writeInt, writeLong, writeShort, writeString, writeString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### RrdSafeFileBackend

          public RrdSafeFileBackend(String path,
                                    long lockWaitTime,
                                    long lockRetryPeriod)
                             throws IOException

      Creates RrdFileBackend object for the given file path, backed by RandomAccessFile object.
      Parameters:
        `path` - Path to a file
        `lockWaitTime` - lock waiting time in milliseconds.
        `lockRetryPeriod` - lock retry period in milliseconds.
      Throws:
        `IOException` - Thrown in case of I/O error.

  - ### Method Detail

    - #### close

          public void close()
                     throws IOException

      close.
      Overrides:
        `close` in class `RrdRandomAccessFileBackend`
      Throws:
        `IOException` - if any.

    - #### getLockInfo

          public static String getLockInfo()

      getLockInfo.
      Returns:
        a `String` object.