/// <summary> /// Initializes a new instance of the <see cref="DnsQueryResult"/> class. /// </summary> /// <param name="response">The response.</param> internal DnsQueryResult(DnsClient.IDnsResponse response) : this() { Id = response.Id; IsAuthoritativeServer = response.IsAuthorativeServer; IsRecursionAvailable = response.IsRecursionAvailable; IsTruncated = response.IsTruncated; OperationCode = response.OperationCode; ResponseCode = response.ResponseCode; if (response.AnswerRecords != null) { foreach (var record in response.AnswerRecords) { AnswerRecords.Add(new DnsRecord(record)); } } if (response.AuthorityRecords != null) { foreach (var record in response.AuthorityRecords) { AuthorityRecords.Add(new DnsRecord(record)); } } if (response.AdditionalRecords != null) { foreach (var record in response.AdditionalRecords) { AdditionalRecords.Add(new DnsRecord(record)); } } }
/// <inheritdoc /> public override IWireSerialiser Read(WireReader reader) { Id = reader.ReadUInt16(); var flags = reader.ReadUInt16(); QR = (flags & 0x8000) == 0x8000; AA = (flags & 0x0400) == 0x0400; TC = (flags & 0x0200) == 0x0200; RD = (flags & 0x0100) == 0x0100; RA = (flags & 0x0080) == 0x0080; opcode4 = (byte)((flags & 0x7800) >> 11); Z = (flags & 0x0040) >> 6; AD = (flags & 0x0020) == 0x0020; CD = (flags & 0x0010) == 0x0010; Status = (MessageStatus)(flags & 0x000F); var qdcount = reader.ReadUInt16(); var ancount = reader.ReadUInt16(); var nscount = reader.ReadUInt16(); var arcount = reader.ReadUInt16(); for (var i = 0; i < qdcount; ++i) { var question = (Question) new Question().Read(reader); Questions.Add(question); } for (var i = 0; i < ancount; ++i) { var rr = (ResourceRecord) new ResourceRecord().Read(reader); Answers.Add(rr); } for (var i = 0; i < nscount; ++i) { var rr = (ResourceRecord) new ResourceRecord().Read(reader); AuthorityRecords.Add(rr); } for (var i = 0; i < arcount; ++i) { var rr = (ResourceRecord) new ResourceRecord().Read(reader); AdditionalRecords.Add(rr); } return(this); }