DNSCache
Date: 2017-02-10

javax.jmdns.impl

## Class DNSCache

- java.lang.Object
- - java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>
  - - javax.jmdns.impl.DNSCache

- All Implemented Interfaces:
    java.util.Map<java.lang.String,java.util.List<? extends DNSEntry>>

      public class DNSCache
      extends java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>

  A table of DNS entries. This is a map table which can handle multiple entries with the same name.

  Storing multiple entries with the same name is implemented using a linked list. This is hidden from the user and can change in later implementation.

  Here's how to iterate over all entries:

             for (Iterator i=dnscache.allValues().iterator(); i.hasNext(); ) {
                   DNSEntry entry = i.next();
                   ...do something with entry...
             }

  And here's how to iterate over all entries having a given name:

             for (Iterator i=dnscache.getDNSEntryList(name).iterator(); i.hasNext(); ) {
                   DNSEntry entry = i.next();
                 ...do something with entry...
             }

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `DNSCache._CacheEntry`

    - ### Nested classes/interfaces inherited from class java.util.AbstractMap

      `java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>`

    - ### Nested classes/interfaces inherited from interface java.util.Map

      `java.util.Map.Entry<K,V>`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static DNSCache` | `EmptyCache`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DNSCache()`
    `DNSCache(DNSCache map)`
    `DNSCache(int initialCapacity)` Create a table with a given initial size.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `addDNSEntry(DNSEntry dnsEntry)` Adds an entry to the table.
    `java.util.Collection<DNSEntry>` | `allValues()` Returns all entries in the cache
    `protected java.lang.Object` | `clone()`
    `java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<? extends DNSEntry>>>` | `entrySet()`
    `DNSEntry` | `getDNSEntry(DNSEntry dnsEntry)` Get a matching DNS entry from the table (using isSameEntry).
    `DNSEntry` | `getDNSEntry(java.lang.String name, DNSRecordType type, DNSRecordClass recordClass)` Get a matching DNS entry from the table.
    `java.util.Collection<? extends DNSEntry>` | `getDNSEntryList(java.lang.String name)` Iterate only over items with matching name.
    `java.util.Collection<? extends DNSEntry>` | `getDNSEntryList(java.lang.String name, DNSRecordType type, DNSRecordClass recordClass)` Get all matching DNS entries from the table.
    `protected java.util.Map.Entry<java.lang.String,java.util.List<? extends DNSEntry>>` | `getEntry(java.lang.String key)`
    `java.util.List<? extends DNSEntry>` | `put(java.lang.String key, java.util.List<? extends DNSEntry> value)`
    `boolean` | `removeDNSEntry(DNSEntry dnsEntry)` Removes a specific entry from the table.
    `boolean` | `replaceDNSEntry(DNSEntry newDNSEntry, DNSEntry existingDNSEntry)` Replace an existing entry by a new one. Note: the 2 entries must have the same key.
    `java.lang.String` | `toString()`

    - ### Methods inherited from class java.util.AbstractMap

      `clear, containsKey, containsValue, equals, get, hashCode, isEmpty, keySet, putAll, remove, size, values`

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

      `finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### EmptyCache

          public static final DNSCache EmptyCache

  - ### Constructor Detail

    - #### DNSCache

          public DNSCache()

    - #### DNSCache

          public DNSCache(DNSCache map)

      Parameters:
        `map` -

    - #### DNSCache

          public DNSCache(int initialCapacity)

      Create a table with a given initial size.
      Parameters:
        `initialCapacity` -

  - ### Method Detail

    - #### entrySet

          public java.util.Set<java.util.Map.Entry<java.lang.String,java.util.List<? extends DNSEntry>>> entrySet()

      Specified by:
        `entrySet` in interface `java.util.Map<java.lang.String,java.util.List<? extends DNSEntry>>`
      Specified by:
        `entrySet` in class `java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>`

    - #### getEntry

          protected java.util.Map.Entry<java.lang.String,java.util.List<? extends DNSEntry>> getEntry(java.lang.String key)

      Parameters:
        `key` -
      Returns:
        map entry for the key

    - #### put

          public java.util.List<? extends DNSEntry> put(java.lang.String key,
                                               java.util.List<? extends DNSEntry> value)

      Specified by:
        `put` in interface `java.util.Map<java.lang.String,java.util.List<? extends DNSEntry>>`
      Overrides:
        `put` in class `java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>`

    - #### clone

          protected java.lang.Object clone()
                                    throws java.lang.CloneNotSupportedException

      Overrides:
        `clone` in class `java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>`
      Throws:
        `java.lang.CloneNotSupportedException`

    - #### allValues

          public java.util.Collection<DNSEntry> allValues()

      Returns all entries in the cache
      Returns:
        all entries in the cache

    - #### getDNSEntryList

          public java.util.Collection<? extends DNSEntry> getDNSEntryList(java.lang.String name)

      Iterate only over items with matching name. Returns an list of DNSEntry or null. To retrieve all entries, one must iterate over this linked list.
      Parameters:
        `name` -
      Returns:
        list of DNSEntries

    - #### getDNSEntry

          public DNSEntry getDNSEntry(DNSEntry dnsEntry)

      Get a matching DNS entry from the table (using isSameEntry). Returns the entry that was found.
      Parameters:
        `dnsEntry` -
      Returns:
        DNSEntry

    - #### getDNSEntry

          public DNSEntry getDNSEntry(java.lang.String name,
                             DNSRecordType type,
                             DNSRecordClass recordClass)

      Get a matching DNS entry from the table.
      Parameters:
        `name` -
        `type` -
        `recordClass` -
      Returns:
        DNSEntry

    - #### getDNSEntryList

          public java.util.Collection<? extends DNSEntry> getDNSEntryList(java.lang.String name,
                                                                 DNSRecordType type,
                                                                 DNSRecordClass recordClass)

      Get all matching DNS entries from the table.
      Parameters:
        `name` -
        `type` -
        `recordClass` -
      Returns:
        list of entries

    - #### addDNSEntry

          public boolean addDNSEntry(DNSEntry dnsEntry)

      Adds an entry to the table.
      Parameters:
        `dnsEntry` -
      Returns:
        true if the entry was added

    - #### removeDNSEntry

          public boolean removeDNSEntry(DNSEntry dnsEntry)

      Removes a specific entry from the table. Returns true if the entry was found.
      Parameters:
        `dnsEntry` -
      Returns:
        true if the entry was removed

    - #### replaceDNSEntry

          public boolean replaceDNSEntry(DNSEntry newDNSEntry,
                                DNSEntry existingDNSEntry)

      Replace an existing entry by a new one.
      Note: the 2 entries must have the same key.
      Parameters:
        `newDNSEntry` -
        `existingDNSEntry` -
      Returns:
        `true` if the entry has been replace, `false` otherwise.

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.util.AbstractMap<java.lang.String,java.util.List<? extends DNSEntry>>`