Package org.minidns.record
Class Record<D extends Data>
java.lang.Object
org.minidns.record.Record<D>
public final class Record<D extends Data> extends Object
A generic DNS record.
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Record.CLASS
The symbolic class of a DNS record (usuallyRecord.CLASS.IN
for Internet).static class
Record.TYPE
The resource record type. -
Field Summary
Fields Modifier and Type Field Description Record.CLASS
clazz
The record class (usually CLASS.IN).int
clazzValue
The value of the class field of a RR.DnsName
name
The generic name of this record.D
payloadData
The payload object of this record.long
ttl
The ttl of this record.Record.TYPE
type
The type (and payload type) of this record.boolean
unicastQuery
MDNS defines the highest bit of the class as the unicast query bit. -
Constructor Summary
Constructors Constructor Description Record(String name, Record.TYPE type, int clazzValue, long ttl, D payloadData)
Record(String name, Record.TYPE type, Record.CLASS clazz, long ttl, D payloadData, boolean unicastQuery)
Record(DnsName name, Record.TYPE type, int clazzValue, long ttl, D payloadData)
Record(DnsName name, Record.TYPE type, Record.CLASS clazz, long ttl, D payloadData, boolean unicastQuery)
-
Method Summary
Modifier and Type Method Description <E extends Data>
Record<E>as(Class<E> dataClass)
Return the record as record with the givenData
class.boolean
equals(Object other)
static <E extends Data>
List<Record<E>>filter(Class<E> dataClass, Collection<Record<? extends Data>> input)
static <E extends Data>
voidfilter(Collection<Record<E>> result, Class<E> dataClass, Collection<Record<? extends Data>> input)
D
getPayload()
The payload data, usually a subclass of data (A, AAAA, CNAME, ...).Question
getQuestion()
Get the question asking for this resource record.DnsMessage.Builder
getQuestionMessage()
long
getTtl()
Retrieve the record ttl.int
hashCode()
<E extends Data>
Record<E>ifPossibleAs(Class<E> dataClass)
Return the record if possible as record with the givenData
class.boolean
isAnswer(Question q)
Check if this record answers a given query.boolean
isUnicastQuery()
See if this query/response was a unicast query (highest class bit set).static Record<Data>
parse(DataInputStream dis, byte[] data)
Parse a given record based on the full message data and the current stream position.byte[]
toByteArray()
void
toOutputStream(OutputStream outputStream)
String
toString()
Retrieve a textual representation of this resource record.
-
Field Details
-
name
The generic name of this record. -
type
The type (and payload type) of this record. -
clazz
The record class (usually CLASS.IN). -
clazzValue
public final int clazzValueThe 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 ttlThe ttl of this record. -
payloadData
The payload object of this record. -
unicastQuery
public final boolean unicastQueryMDNS defines the highest bit of the class as the unicast query bit.
-
-
Constructor Details
-
Record
public Record(DnsName name, Record.TYPE type, Record.CLASS clazz, long ttl, D payloadData, boolean unicastQuery) -
Record
public Record(String name, Record.TYPE type, Record.CLASS clazz, long ttl, D payloadData, boolean unicastQuery) -
Record
-
Record
-
-
Method Details
-
parse
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.
-
toOutputStream
- Throws:
IOException
-
toByteArray
public byte[] toByteArray() -
toString
Retrieve a textual representation of this resource record. -
isAnswer
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
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
Get the question asking for this resource record. This will returnnull
if the record is not retrievable, i.e.Record.TYPE.OPT
.- Returns:
- the question for this resource record or
null
.
-
getQuestionMessage
-
hashCode
public int hashCode() -
equals
-
ifPossibleAs
Return the record if possible as record with the givenData
class. If the record does not hold payload of the given data class type, thennull
will be returned. -
as
Return the record as record with the givenData
class. If the record does not hold payload of the given data class type, then aIllegalArgumentException
will be thrown.- Type Parameters:
E
- a subtype ofData
.- Parameters:
dataClass
- a class of theData
type.- Returns:
- the record with a specialized payload type.
- See Also:
ifPossibleAs(Class)
-
filter
public static <E extends Data> void filter(Collection<Record<E>> result, Class<E> dataClass, Collection<Record<? extends Data>> input) -
filter
-