Class DNSRecord

java.lang.Object
javax.jmdns.impl.DNSEntry
javax.jmdns.impl.DNSRecord
Direct Known Subclasses:
DNSRecord.Address, DNSRecord.HostInformation, DNSRecord.Pointer, DNSRecord.Service, DNSRecord.Text

public abstract class DNSRecord extends DNSEntry
DNS record
  • Field Details

    • 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 InetAddress _source
      This source is mainly for debugging purposes, should be the address that sent this record.
  • Constructor Details

    • DNSRecord

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

    • equals

      public boolean equals(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, InetAddress addr, int port, DNSOutgoing out) throws IOException
      Adds this as an answer to the provided outgoing datagram.
      Throws:
      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.
    • write

      abstract void write(DNSOutgoing.MessageOutputStream out)
      Write this record into an outgoing message.
    • 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(InetAddress source)
    • getRecordSource

      public InetAddress getRecordSource()
    • toString

      protected void toString(StringBuilder sb)
      Overrides:
      toString in class DNSEntry
      Parameters:
      sb -
    • setTTL

      public void setTTL(int ttl)
    • getTTL

      public int getTTL()
    • getCreated

      public long getCreated()