Class DNSCache

  • All Implemented Interfaces:
    Serializable, ConcurrentMap<String,​List<DNSEntry>>, Map<String,​List<DNSEntry>>

    public class DNSCache
    extends ConcurrentHashMap<String,​List<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...
           }
     
    Author:
    Arthur van Hoff, Werner Randelshofer, Rick Blair, Pierre Frisch
    See Also:
    Serialized Form
    • 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

      • allValues

        public Collection<DNSEntry> allValues()
        Returns all entries in the cache
        Returns:
        all entries in the cache
      • getDNSEntryList

        public Collection<? extends DNSEntry> getDNSEntryList​(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​(String name,
                                    DNSRecordType type,
                                    DNSRecordClass recordClass)
        Get a matching DNS entry from the table.
        Parameters:
        name -
        type -
        recordClass -
        Returns:
        DNSEntry
      • 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.
      • logCachedContent

        public void logCachedContent()
        Prints the content of the cache to the logger.