Class DNSRecord

    • Field Detail

      • logger

        private static org.slf4j.Logger logger
      • _ttl

        private int _ttl
      • _created

        private long _created
      • _isStaleAndShouldBeRefreshedPercentage

        private int _isStaleAndShouldBeRefreshedPercentage
      • _randomStaleRefreshOffset

        private final int _randomStaleRefreshOffset
      • _source

        private java.net.InetAddress _source
        This source is mainly for debugging purposes, should be the address that sent this record.
    • Constructor Detail

      • DNSRecord

        DNSRecord​(java.lang.String name,
                  DNSRecordType type,
                  DNSRecordClass recordClass,
                  boolean unique,
                  int ttl)
        Create a DNSRecord with a name, type, class, and ttl.
    • Method Detail

      • equals

        public boolean equals​(java.lang.Object other)
        Overrides:
        equals in class DNSEntry
      • sameValue

        abstract boolean sameValue​(DNSRecord other)
        True if this record has the same value as some other record.
      • sameType

        boolean sameType​(DNSRecord other)
        True if this record has the same type as some other record.
      • handleQuery

        abstract boolean handleQuery​(JmDNSImpl dns,
                                     long expirationTime)
        Handles a query represented by this record.
        Returns:
        Returns true if a conflict with one of the services registered with JmDNS or with the hostname occured.
      • handleResponse

        abstract boolean handleResponse​(JmDNSImpl dns)
        Handles a response represented by this record.
        Returns:
        Returns true if a conflict with one of the services registered with JmDNS or with the hostname occured.
      • addAnswer

        abstract DNSOutgoing addAnswer​(JmDNSImpl dns,
                                       DNSIncoming in,
                                       java.net.InetAddress addr,
                                       int port,
                                       DNSOutgoing out)
                                throws java.io.IOException
        Adds this as an answer to the provided outgoing datagram.
        Throws:
        java.io.IOException
      • suppressedBy

        boolean suppressedBy​(DNSIncoming msg)
        True if this record is suppressed by the answers in a message.
      • suppressedBy

        boolean suppressedBy​(DNSRecord other)
        True if this record would be suppressed by an answer. This is the case if this record would not have a significantly longer TTL.
      • getExpirationTime

        long getExpirationTime​(int percent)
        Get the expiration time of this record.
      • getRemainingTTL

        int getRemainingTTL​(long now)
        Get the remaining TTL for this record.
      • isExpired

        public boolean isExpired​(long now)
        Description copied from class: DNSEntry
        Check if the record is expired.
        Specified by:
        isExpired in class DNSEntry
        Parameters:
        now - update date
        Returns:
        true is the record is expired, false otherwise.
      • isStale

        public boolean isStale​(long now)
        Description copied from class: DNSEntry
        Check if the record is stale, i.e. it has outlived more than half of its TTL.
        Specified by:
        isStale in class DNSEntry
        Parameters:
        now - update date
        Returns:
        true is the record is stale, false otherwise.
      • isStaleAndShouldBeRefreshed

        public boolean isStaleAndShouldBeRefreshed​(long now)
        Check if the record is stale and whether the record should be refreshed over the network.
        Parameters:
        now - update date
        Returns:
        true is the record is stale and should be refreshed, false otherwise.
      • incrementRefreshPercentage

        public void incrementRefreshPercentage()
      • resetTTL

        void resetTTL​(DNSRecord other)
        Reset the TTL of a record. This avoids having to update the entire record in the cache.
      • setWillExpireSoon

        void setWillExpireSoon​(long now)
        When a record flushed we don't remove it immediately, but mark it for rapid decay.
      • isSingleValued

        public abstract boolean isSingleValued()
        Determine if a record can have multiple values in the cache.
        Returns:
        false if this record can have multiple values in the cache, true otherwise.
      • getServiceInfo

        public ServiceInfo getServiceInfo()
        Return a service information associated with that record if appropriate.
        Returns:
        service information
      • getServiceInfo

        public abstract ServiceInfo getServiceInfo​(boolean persistent)
        Return a service information associated with that record if appropriate.
        Parameters:
        persistent - if true ServiceListener.resolveService will be called whenever new new information is received.
        Returns:
        service information
      • getServiceEvent

        public abstract ServiceEvent getServiceEvent​(JmDNSImpl dns)
        Creates and return a service event for this record.
        Parameters:
        dns - DNS serviced by this event
        Returns:
        service event
      • setRecordSource

        public void setRecordSource​(java.net.InetAddress source)
      • getRecordSource

        public java.net.InetAddress getRecordSource()
      • toString

        protected void toString​(java.lang.StringBuilder sb)
        Overrides:
        toString in class DNSEntry
      • setTTL

        public void setTTL​(int ttl)
      • getTTL

        public int getTTL()
      • getCreated

        public long getCreated()