Cache (dnsjava documentation)
Date: 2013-04-10

org.xbill.DNS

## Class Cache

- java.lang.Object
- - org.xbill.DNS.Cache

-     public class Cache
      extends Object

  A cache of DNS records. The cache obeys TTLs, so items are purged after their validity period is complete. Negative answers are cached, to avoid repeated failed DNS queries. The credibility of each RRset is maintained, so that more credible records replace less credible records, and lookups can specify the minimum credibility of data they are requesting.
  Author:
    Brian Wellington
  See Also:
    `RRset`, `Credibility`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Cache()` Creates an empty Cache for class IN.
    `Cache(int dclass)` Creates an empty Cache
    `Cache(String file)` Creates a Cache which initially contains all records in the specified file.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `SetResponse` | `addMessage(Message in)` Adds all data from a Message into the Cache.
    `void` | `addNegative(Name name, int type, SOARecord soa, int cred)` Adds a negative entry to the Cache.
    `void` | `addRecord(Record r, int cred, Object o)` Adds a record to the Cache.
    `void` | `addRRset(RRset rrset, int cred)` Adds an RRset to the Cache.
    `void` | `clearCache()` Empties the Cache.
    `RRset[]` | `findAnyRecords(Name name, int type)` Looks up Records in the Cache (a wrapper around lookupRecords).
    `RRset[]` | `findRecords(Name name, int type)` Looks up credible Records in the Cache (a wrapper around lookupRecords).
    `void` | `flushName(Name name)` Flushes all RRsets with a given name from the cache
    `void` | `flushSet(Name name, int type)` Flushes an RRset from the cache
    `int` | `getDClass()` Returns the DNS class of this cache.
    `int` | `getMaxCache()` Gets the maximum length of time that records will be stored in this Cache.
    `int` | `getMaxEntries()` Gets the maximum number of entries in the Cache, where an entry consists of all records with a specific Name.
    `int` | `getMaxNCache()` Gets the maximum length of time that a negative response will be stored in this Cache.
    `int` | `getSize()` Gets the current number of entries in the Cache, where an entry consists of all records with a specific Name.
    `protected SetResponse` | `lookup(Name name, int type, int minCred)` Finds all matching sets or something that causes the lookup to stop.
    `SetResponse` | `lookupRecords(Name name, int type, int minCred)` Looks up Records in the Cache.
    `void` | `setMaxCache(int seconds)` Sets the maximum length of time that records will be stored in this Cache.
    `void` | `setMaxEntries(int entries)` Sets the maximum number of entries in the Cache, where an entry consists of all records with a specific Name.
    `void` | `setMaxNCache(int seconds)` Sets the maximum length of time that a negative response will be stored in this Cache.
    `String` | `toString()` Returns the contents of the Cache as a string.

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

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

- - ### Constructor Detail

    - #### Cache

          public Cache(int dclass)

      Creates an empty Cache
      Parameters:
        `dclass` - The DNS class of this cache
      See Also:
        `DClass`

    - #### Cache

          public Cache()

      Creates an empty Cache for class IN.
      See Also:
        `DClass`

    - #### Cache

          public Cache(String file)
                throws IOException

      Creates a Cache which initially contains all records in the specified file.
      Throws:
        `IOException`

  - ### Method Detail

    - #### clearCache

          public void clearCache()

      Empties the Cache.

    - #### addRecord

          public void addRecord(Record r,
                       int cred,
                       Object o)

      Adds a record to the Cache.
      Parameters:
        `r` - The record to be added
        `cred` - The credibility of the record
        `o` - The source of the record (this could be a Message, for example)
      See Also:
        `Record`

    - #### addRRset

          public void addRRset(RRset rrset,
                      int cred)

      Adds an RRset to the Cache.
      Parameters:
        `rrset` - The RRset to be added
        `cred` - The credibility of these records
      See Also:
        `RRset`

    - #### addNegative

          public void addNegative(Name name,
                         int type,
                         SOARecord soa,
                         int cred)

      Adds a negative entry to the Cache.
      Parameters:
        `name` - The name of the negative entry
        `type` - The type of the negative entry
        `soa` - The SOA record to add to the negative cache entry, or null. The negative cache ttl is derived from the SOA.
        `cred` - The credibility of the negative entry

    - #### lookup

          protected SetResponse lookup(Name name,
                           int type,
                           int minCred)

      Finds all matching sets or something that causes the lookup to stop.

    - #### lookupRecords

          public SetResponse lookupRecords(Name name,
                                  int type,
                                  int minCred)

      Looks up Records in the Cache. This follows CNAMEs and handles negatively cached data.
      Parameters:
        `name` - The name to look up
        `type` - The type to look up
        `minCred` - The minimum acceptable credibility
      Returns:
        A SetResponse object
      See Also:
        `SetResponse`, `Credibility`

    - #### findRecords

          public RRset[] findRecords(Name name,
                            int type)

      Looks up credible Records in the Cache (a wrapper around lookupRecords). Unlike lookupRecords, this given no indication of why failure occurred.
      Parameters:
        `name` - The name to look up
        `type` - The type to look up
      Returns:
        An array of RRsets, or null
      See Also:
        `Credibility`

    - #### findAnyRecords

          public RRset[] findAnyRecords(Name name,
                               int type)

      Looks up Records in the Cache (a wrapper around lookupRecords). Unlike lookupRecords, this given no indication of why failure occurred.
      Parameters:
        `name` - The name to look up
        `type` - The type to look up
      Returns:
        An array of RRsets, or null
      See Also:
        `Credibility`

    - #### addMessage

          public SetResponse addMessage(Message in)

      Adds all data from a Message into the Cache. Each record is added with the appropriate credibility, and negative answers are cached as such.
      Parameters:
        `in` - The Message to be added
      Returns:
        A SetResponse that reflects what would be returned from a cache lookup, or null if nothing useful could be cached from the message.
      See Also:
        `Message`

    - #### flushSet

          public void flushSet(Name name,
                      int type)

      Flushes an RRset from the cache
      Parameters:
        `name` - The name of the records to be flushed
        `type` - The type of the records to be flushed
      See Also:
        `RRset`

    - #### flushName

          public void flushName(Name name)

      Flushes all RRsets with a given name from the cache
      Parameters:
        `name` - The name of the records to be flushed
      See Also:
        `RRset`

    - #### setMaxNCache

          public void setMaxNCache(int seconds)

      Sets the maximum length of time that a negative response will be stored in this Cache. A negative value disables this feature (that is, sets no limit).

    - #### getMaxNCache

          public int getMaxNCache()

      Gets the maximum length of time that a negative response will be stored in this Cache. A negative value indicates no limit.

    - #### setMaxCache

          public void setMaxCache(int seconds)

      Sets the maximum length of time that records will be stored in this Cache. A negative value disables this feature (that is, sets no limit).

    - #### getMaxCache

          public int getMaxCache()

      Gets the maximum length of time that records will be stored in this Cache. A negative value indicates no limit.

    - #### getSize

          public int getSize()

      Gets the current number of entries in the Cache, where an entry consists of all records with a specific Name.

    - #### getMaxEntries

          public int getMaxEntries()

      Gets the maximum number of entries in the Cache, where an entry consists of all records with a specific Name. A negative value is treated as an infinite limit.

    - #### setMaxEntries

          public void setMaxEntries(int entries)

      Sets the maximum number of entries in the Cache, where an entry consists of all records with a specific Name. A negative value is treated as an infinite limit. Note that setting this to a value lower than the current number of entries will not cause the Cache to shrink immediately. The default maximum number of entries is 50000.
      Parameters:
        `entries` - The maximum number of entries in the Cache.

    - #### getDClass

          public int getDClass()

      Returns the DNS class of this cache.

    - #### toString

          public String toString()

      Returns the contents of the Cache as a string.
      Overrides:
        `toString` in class `Object`