using System; using System.Threading.Tasks; using System.Collections.Generic; namespace Swan.Net.Dns { /// /// DnsClient public interfaces. /// internal partial class DnsClient { public interface IDnsMessage { IList Questions { get; } Int32 Size { get; } Byte[] ToArray(); } public interface IDnsMessageEntry { DnsDomain Name { get; } DnsRecordType Type { get; } DnsRecordClass Class { get; } Int32 Size { get; } Byte[] ToArray(); } public interface IDnsResourceRecord : IDnsMessageEntry { TimeSpan TimeToLive { get; } Int32 DataLength { get; } Byte[] Data { get; } } public interface IDnsRequest : IDnsMessage { Int32 Id { get; set; } DnsOperationCode OperationCode { get; set; } Boolean RecursionDesired { get; set; } } public interface IDnsResponse : IDnsMessage { Int32 Id { get; set; } IList AnswerRecords { get; } IList AuthorityRecords { get; } IList AdditionalRecords { get; } Boolean IsRecursionAvailable { get; set; } Boolean IsAuthorativeServer { get; set; } Boolean IsTruncated { get; set; } DnsOperationCode OperationCode { get; set; } DnsResponseCode ResponseCode { get; set; } } public interface IDnsRequestResolver { Task Request(DnsClientRequest request); } } }