@UnstableApi public abstract class AbstractDnsMessage extends AbstractReferenceCounted implements DnsMessage
DnsMessage
.Modifier and Type | Field and Description |
---|---|
private java.lang.Object |
additionals |
private java.lang.Object |
answers |
private java.lang.Object |
authorities |
private short |
id |
private ResourceLeakTracker<DnsMessage> |
leak |
private static ResourceLeakDetector<DnsMessage> |
leakDetector |
private DnsOpCode |
opCode |
private java.lang.Object |
questions |
private boolean |
recursionDesired |
private static int |
SECTION_COUNT |
private static int |
SECTION_QUESTION |
private byte |
z |
Modifier | Constructor and Description |
---|---|
protected |
AbstractDnsMessage(int id)
Creates a new instance with the specified
id and DnsOpCode.QUERY opCode. |
protected |
AbstractDnsMessage(int id,
DnsOpCode opCode)
Creates a new instance with the specified
id and opCode . |
Modifier and Type | Method and Description |
---|---|
DnsMessage |
addRecord(DnsSection section,
DnsRecord record)
Adds the specified
record at the end of the specified section of this DNS message. |
DnsMessage |
addRecord(DnsSection section,
int index,
DnsRecord record)
Adds the specified
record at the specified index of the specified section
of this DNS message. |
private void |
addRecord(int section,
DnsRecord record) |
private void |
addRecord(int section,
int index,
DnsRecord record) |
private static <T extends DnsRecord> |
castRecord(java.lang.Object record) |
private static DnsRecord |
checkQuestion(int section,
DnsRecord record) |
DnsMessage |
clear()
Removes all the records in this DNS message.
|
DnsMessage |
clear(DnsSection section)
Removes all the records in the specified
section of this DNS message. |
private void |
clear(int section) |
int |
count()
Returns the number of records in this DNS message.
|
int |
count(DnsSection section)
Returns the number of records in the specified
section of this DNS message. |
private int |
count(int section) |
protected void |
deallocate()
Called once
AbstractReferenceCounted.refCnt() is equals 0. |
boolean |
equals(java.lang.Object obj) |
int |
hashCode() |
int |
id()
Returns the
ID of this DNS message. |
boolean |
isRecursionDesired()
Returns the
RD (recursion desired} field of this DNS message. |
private static java.util.ArrayList<DnsRecord> |
newRecordList() |
DnsOpCode |
opCode()
Returns the
opCode of this DNS message. |
<T extends DnsRecord> |
recordAt(DnsSection section)
Returns the first record in the specified
section of this DNS message. |
<T extends DnsRecord> |
recordAt(DnsSection section,
int index)
Returns the record at the specified
index of the specified section of this DNS message. |
private <T extends DnsRecord> |
recordAt(int section) |
private <T extends DnsRecord> |
recordAt(int section,
int index) |
<T extends DnsRecord> |
removeRecord(DnsSection section,
int index)
Removes the record at the specified
index of the specified section from this DNS message. |
private <T extends DnsRecord> |
removeRecord(int section,
int index) |
DnsMessage |
retain()
Increases the reference count by
1 . |
DnsMessage |
retain(int increment)
Increases the reference count by the specified
increment . |
private java.lang.Object |
sectionAt(int section) |
private static int |
sectionOrdinal(DnsSection section) |
DnsMessage |
setId(int id)
Sets the
ID of this DNS message. |
DnsMessage |
setOpCode(DnsOpCode opCode)
Sets the
opCode of this DNS message. |
DnsMessage |
setRecord(DnsSection section,
DnsRecord record)
Sets the specified
section of this DNS message to the specified record ,
making it a single-record section. |
<T extends DnsRecord> |
setRecord(DnsSection section,
int index,
DnsRecord record)
Sets the specified
record at the specified index of the specified section
of this DNS message. |
private void |
setRecord(int section,
DnsRecord record) |
private <T extends DnsRecord> |
setRecord(int section,
int index,
DnsRecord record) |
DnsMessage |
setRecursionDesired(boolean recursionDesired)
Sets the
RD (recursion desired} field of this DNS message. |
private void |
setSection(int section,
java.lang.Object value) |
DnsMessage |
setZ(int z)
Sets the
Z (reserved for future use) field of this DNS message. |
DnsMessage |
touch()
Records the current access location of this object for debugging purposes.
|
DnsMessage |
touch(java.lang.Object hint)
Records the current access location of this object with an additional arbitrary information for debugging
purposes.
|
int |
z()
Returns the
Z (reserved for future use) field of this DNS message. |
refCnt, release, release, setRefCnt
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
refCnt, release, release
private static final ResourceLeakDetector<DnsMessage> leakDetector
private static final int SECTION_QUESTION
private static final int SECTION_COUNT
private final ResourceLeakTracker<DnsMessage> leak
private short id
private DnsOpCode opCode
private boolean recursionDesired
private byte z
private java.lang.Object questions
private java.lang.Object answers
private java.lang.Object authorities
private java.lang.Object additionals
protected AbstractDnsMessage(int id)
id
and DnsOpCode.QUERY
opCode.protected AbstractDnsMessage(int id, DnsOpCode opCode)
id
and opCode
.public int id()
DnsMessage
ID
of this DNS message.id
in interface DnsMessage
public DnsMessage setId(int id)
DnsMessage
ID
of this DNS message.setId
in interface DnsMessage
public DnsOpCode opCode()
DnsMessage
opCode
of this DNS message.opCode
in interface DnsMessage
public DnsMessage setOpCode(DnsOpCode opCode)
DnsMessage
opCode
of this DNS message.setOpCode
in interface DnsMessage
public boolean isRecursionDesired()
DnsMessage
RD
(recursion desired} field of this DNS message.isRecursionDesired
in interface DnsMessage
public DnsMessage setRecursionDesired(boolean recursionDesired)
DnsMessage
RD
(recursion desired} field of this DNS message.setRecursionDesired
in interface DnsMessage
public int z()
DnsMessage
Z
(reserved for future use) field of this DNS message.z
in interface DnsMessage
public DnsMessage setZ(int z)
DnsMessage
Z
(reserved for future use) field of this DNS message.setZ
in interface DnsMessage
public int count(DnsSection section)
DnsMessage
section
of this DNS message.count
in interface DnsMessage
private int count(int section)
public int count()
DnsMessage
count
in interface DnsMessage
public <T extends DnsRecord> T recordAt(DnsSection section)
DnsMessage
section
of this DNS message.
When the specified section
is DnsSection.QUESTION
, the type of the returned record is
always DnsQuestion
.recordAt
in interface DnsMessage
null
if this message doesn't have any records in the specified section
private <T extends DnsRecord> T recordAt(int section)
public <T extends DnsRecord> T recordAt(DnsSection section, int index)
DnsMessage
index
of the specified section
of this DNS message.
When the specified section
is DnsSection.QUESTION
, the type of the returned record is
always DnsQuestion
.recordAt
in interface DnsMessage
private <T extends DnsRecord> T recordAt(int section, int index)
public DnsMessage setRecord(DnsSection section, DnsRecord record)
DnsMessage
section
of this DNS message to the specified record
,
making it a single-record section. When the specified section
is DnsSection.QUESTION
,
the specified record
must be a DnsQuestion
.setRecord
in interface DnsMessage
private void setRecord(int section, DnsRecord record)
public <T extends DnsRecord> T setRecord(DnsSection section, int index, DnsRecord record)
DnsMessage
record
at the specified index
of the specified section
of this DNS message. When the specified section
is DnsSection.QUESTION
,
the specified record
must be a DnsQuestion
.setRecord
in interface DnsMessage
public DnsMessage addRecord(DnsSection section, DnsRecord record)
DnsMessage
record
at the end of the specified section
of this DNS message.
When the specified section
is DnsSection.QUESTION
, the specified record
must be a DnsQuestion
.addRecord
in interface DnsMessage
private void addRecord(int section, DnsRecord record)
public DnsMessage addRecord(DnsSection section, int index, DnsRecord record)
DnsMessage
record
at the specified index
of the specified section
of this DNS message. When the specified section
is DnsSection.QUESTION
, the specified
record
must be a DnsQuestion
.addRecord
in interface DnsMessage
private void addRecord(int section, int index, DnsRecord record)
public <T extends DnsRecord> T removeRecord(DnsSection section, int index)
DnsMessage
index
of the specified section
from this DNS message.
When the specified section
is DnsSection.QUESTION
, the type of the returned record is
always DnsQuestion
.removeRecord
in interface DnsMessage
private <T extends DnsRecord> T removeRecord(int section, int index)
public DnsMessage clear(DnsSection section)
DnsMessage
section
of this DNS message.clear
in interface DnsMessage
public DnsMessage clear()
DnsMessage
clear
in interface DnsMessage
private void clear(int section)
public DnsMessage touch()
ReferenceCounted
ResourceLeakDetector
. This method is a shortcut to touch(null)
.touch
in interface DnsMessage
touch
in interface ReferenceCounted
touch
in class AbstractReferenceCounted
public DnsMessage touch(java.lang.Object hint)
ReferenceCounted
ResourceLeakDetector
.touch
in interface DnsMessage
touch
in interface ReferenceCounted
public DnsMessage retain()
ReferenceCounted
1
.retain
in interface DnsMessage
retain
in interface ReferenceCounted
retain
in class AbstractReferenceCounted
public DnsMessage retain(int increment)
ReferenceCounted
increment
.retain
in interface DnsMessage
retain
in interface ReferenceCounted
retain
in class AbstractReferenceCounted
protected void deallocate()
AbstractReferenceCounted
AbstractReferenceCounted.refCnt()
is equals 0.deallocate
in class AbstractReferenceCounted
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
private java.lang.Object sectionAt(int section)
private void setSection(int section, java.lang.Object value)
private static int sectionOrdinal(DnsSection section)
private static <T extends DnsRecord> T castRecord(java.lang.Object record)
private static java.util.ArrayList<DnsRecord> newRecordList()