Class Record<D extends Data>


  • public final class Record<D extends Data>
    extends Object
    A generic DNS record.
    • Field Detail

      • name

        public final DnsName name
        The generic name of this record.
      • type

        public final Record.TYPE type
        The type (and payload type) of this record.
      • clazz

        public final Record.CLASS clazz
        The record class (usually CLASS.IN).
      • clazzValue

        public final int clazzValue
        The value of the class field of a RR. According to RFC 2671 (OPT RR) this is not necessarily representable using clazz field and unicastQuery bit
      • ttl

        public final long ttl
        The ttl of this record.
      • payloadData

        public final D extends Data payloadData
        The payload object of this record.
      • unicastQuery

        public final boolean unicastQuery
        MDNS defines the highest bit of the class as the unicast query bit.
    • Method Detail

      • parse

        public static Record<Data> parse​(DataInputStream dis,
                                         byte[] data)
                                  throws IOException
        Parse a given record based on the full message data and the current stream position.
        Parameters:
        dis - The DataInputStream positioned at the first record byte.
        data - The full message data.
        Returns:
        the record which was parsed.
        Throws:
        IOException - In case of malformed replies.
      • toByteArray

        public byte[] toByteArray()
      • toString

        public String toString()
        Retrieve a textual representation of this resource record.
        Overrides:
        toString in class Object
        Returns:
        String
      • isAnswer

        public boolean isAnswer​(Question q)
        Check if this record answers a given query.
        Parameters:
        q - The query.
        Returns:
        True if this record is a valid answer.
      • isUnicastQuery

        public boolean isUnicastQuery()
        See if this query/response was a unicast query (highest class bit set).
        Returns:
        True if it is a unicast query/response record.
      • getPayload

        public D getPayload()
        The payload data, usually a subclass of data (A, AAAA, CNAME, ...).
        Returns:
        The payload data.
      • getTtl

        public long getTtl()
        Retrieve the record ttl.
        Returns:
        The record ttl.
      • getQuestion

        public Question getQuestion()
        Get the question asking for this resource record. This will return null if the record is not retrievable, i.e. Record.TYPE.OPT.
        Returns:
        the question for this resource record or null.
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • ifPossibleAs

        public <E extends DataRecord<E> ifPossibleAs​(Class<E> dataClass)
        Return the record if possible as record with the given Data class. If the record does not hold payload of the given data class type, then null will be returned.
        Type Parameters:
        E - a subtype of Data.
        Parameters:
        dataClass - a class of the Data type.
        Returns:
        the record with a specialized payload type or null.
        See Also:
        as(Class)
      • as

        public <E extends DataRecord<E> as​(Class<E> dataClass)
        Return the record as record with the given Data class. If the record does not hold payload of the given data class type, then a IllegalArgumentException will be thrown.
        Type Parameters:
        E - a subtype of Data.
        Parameters:
        dataClass - a class of the Data type.
        Returns:
        the record with a specialized payload type.
        See Also:
        ifPossibleAs(Class)