76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace DnsClient.Protocol
|
|
{
|
|
/// <summary>
|
|
/// A simple response message which gets returned by the <see cref="LookupClient"/>.
|
|
/// </summary>
|
|
public class DnsResponseMessage
|
|
{
|
|
private readonly IList<DnsResourceRecord> _additionals = new List<DnsResourceRecord>();
|
|
private readonly IList<DnsResourceRecord> _answers = new List<DnsResourceRecord>();
|
|
private readonly IList<DnsResourceRecord> _authorities = new List<DnsResourceRecord>();
|
|
private readonly DnsResponseHeader _header;
|
|
private readonly IList<DnsQuestion> _questions = new List<DnsQuestion>();
|
|
|
|
/// <summary>
|
|
/// Gets the readonly representation of this message which can be returned.
|
|
/// </summary>
|
|
public DnsQueryResponse AsReadonly
|
|
=> new DnsQueryResponse(_header, _questions.ToArray(), _answers.ToArray(), _additionals.ToArray(), _authorities.ToArray());
|
|
|
|
public DnsResponseHeader Header => _header;
|
|
|
|
public DnsResponseMessage(DnsResponseHeader header)
|
|
{
|
|
if (header == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(header));
|
|
}
|
|
|
|
_header = header;
|
|
}
|
|
|
|
public void AddAdditional(DnsResourceRecord record)
|
|
{
|
|
if (record == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(record));
|
|
}
|
|
|
|
_additionals.Add(record);
|
|
}
|
|
|
|
public void AddAnswer(DnsResourceRecord record)
|
|
{
|
|
if (record == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(record));
|
|
}
|
|
|
|
_answers.Add(record);
|
|
}
|
|
|
|
public void AddAuthority(DnsResourceRecord record)
|
|
{
|
|
if (record == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(record));
|
|
}
|
|
|
|
_authorities.Add(record);
|
|
}
|
|
|
|
public void AddQuestion(DnsQuestion question)
|
|
{
|
|
if (question == null)
|
|
{
|
|
throw new ArgumentNullException(nameof(question));
|
|
}
|
|
|
|
_questions.Add(question);
|
|
}
|
|
}
|
|
} |