File: Resolver\DnsResponse.cs
Web Access
Project: src\src\Microsoft.Extensions.ServiceDiscovery.Dns\Microsoft.Extensions.ServiceDiscovery.Dns.csproj (Microsoft.Extensions.ServiceDiscovery.Dns)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Buffers;
 
namespace Microsoft.Extensions.ServiceDiscovery.Dns.Resolver;
 
internal struct DnsResponse : IDisposable
{
    public DnsMessageHeader Header { get; }
    public List<DnsResourceRecord> Answers { get; }
    public List<DnsResourceRecord> Authorities { get; }
    public List<DnsResourceRecord> Additionals { get; }
    public DateTime CreatedAt { get; }
    public DateTime Expiration { get; }
    public ArraySegment<byte> RawMessageBytes { get; private set; }
 
    public DnsResponse(ArraySegment<byte> rawData, DnsMessageHeader header, DateTime createdAt, DateTime expiration, List<DnsResourceRecord> answers, List<DnsResourceRecord> authorities, List<DnsResourceRecord> additionals)
    {
        RawMessageBytes = rawData;
 
        Header = header;
        CreatedAt = createdAt;
        Expiration = expiration;
        Answers = answers;
        Authorities = authorities;
        Additionals = additionals;
    }
 
    public void Dispose()
    {
        if (RawMessageBytes.Array != null)
        {
            ArrayPool<byte>.Shared.Return(RawMessageBytes.Array);
        }
 
        RawMessageBytes = default; // prevent further access to the raw data
    }
}