Class DNSEntry

  • Direct Known Subclasses:
    DNSQuestion, DNSRecord

    public abstract class DNSEntry
    extends java.lang.Object
    DNS entry with a name, type, and class. This is the base class for questions and records.
    • Field Detail

      • _key

        private final java.lang.String _key
      • _name

        private final java.lang.String _name
      • _type

        private final java.lang.String _type
      • _unique

        private final boolean _unique
      • _qualifiedNameMap

        final java.util.Map<ServiceInfo.Fields,​java.lang.String> _qualifiedNameMap
    • Constructor Detail

    • Method Detail

      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • isSameEntry

        public boolean isSameEntry​(DNSEntry entry)
        Check if two entries have exactly the same name, type, and class.
        Parameters:
        entry -
        Returns:
        true if the two entries have are for the same record, false otherwise
      • sameSubtype

        public boolean sameSubtype​(DNSEntry other)
        Check if two entries have the same subtype.
        Parameters:
        other -
        Returns:
        true if the two entries have are for the same subtype, false otherwise
      • matchRecordClass

        public boolean matchRecordClass​(DNSRecordClass recordClass)
        Check if the requested record class match the current record class
        Parameters:
        recordClass -
        Returns:
        true if the two entries have compatible class, false otherwise
      • matchRecordType

        public boolean matchRecordType​(DNSRecordType recordType)
        Check if the requested record tyep match the current record type
        Parameters:
        recordType -
        Returns:
        true if the two entries have compatible type, false otherwise
      • getSubtype

        public java.lang.String getSubtype()
        Returns the subtype of this entry
        Returns:
        subtype of this entry
      • getName

        public java.lang.String getName()
        Returns the name of this entry
        Returns:
        name of this entry
      • getType

        public java.lang.String getType()
        Returns:
        the type
      • getKey

        public java.lang.String getKey()
        Returns the key for this entry. The key is the lower case name.
        Returns:
        key for this entry
      • getRecordType

        public DNSRecordType getRecordType()
        Returns:
        record type
      • getRecordClass

        public DNSRecordClass getRecordClass()
        Returns:
        record class
      • isUnique

        public boolean isUnique()
        Returns:
        true if unique
      • getQualifiedNameMap

        public java.util.Map<ServiceInfo.Fields,​java.lang.String> getQualifiedNameMap()
      • isServicesDiscoveryMetaQuery

        public boolean isServicesDiscoveryMetaQuery()
      • isDomainDiscoveryQuery

        public boolean isDomainDiscoveryQuery()
      • isReverseLookup

        public boolean isReverseLookup()
      • isV4ReverseLookup

        public boolean isV4ReverseLookup()
      • isV6ReverseLookup

        public boolean isV6ReverseLookup()
      • isStale

        public abstract boolean isStale​(long now)
        Check if the record is stale, i.e. it has outlived more than half of its TTL.
        Parameters:
        now - update date
        Returns:
        true is the record is stale, false otherwise.
      • isExpired

        public abstract boolean isExpired​(long now)
        Check if the record is expired.
        Parameters:
        now - update date
        Returns:
        true is the record is expired, false otherwise.
      • isSameRecordClass

        public boolean isSameRecordClass​(DNSEntry entry)
        Check that 2 entries are of the same class.
        Parameters:
        entry -
        Returns:
        true is the two class are the same, false otherwise.
      • isSameType

        public boolean isSameType​(DNSEntry entry)
        Check that 2 entries are of the same type.
        Parameters:
        entry -
        Returns:
        true is the two type are the same, false otherwise.
      • toByteArray

        protected void toByteArray​(java.io.DataOutputStream dout)
                            throws java.io.IOException
        Parameters:
        dout -
        Throws:
        java.io.IOException
      • toByteArray

        protected byte[] toByteArray()
        Creates a byte array representation of this record. This is needed for tie-break tests according to draft-cheshire-dnsext-multicastdns-04.txt chapter 9.2.
        Returns:
        byte array representation
      • compareTo

        public int compareTo​(DNSEntry that)
        Does a lexicographic comparison of the byte array representation of this record and that record. This is needed for tie-break tests according to draft-cheshire-dnsext-multicastdns-04.txt chapter 9.2.
        Parameters:
        that -
        Returns:
        a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
      • hashCode

        public int hashCode()
        Overriden, to return a value which is consistent with the value returned by equals(Object).
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • toString

        protected void toString​(java.lang.StringBuilder sb)
        Parameters:
        sb -