Meum/Meum.Client/ServerConnection.cs
2025-05-09 16:32:35 +05:00

43 lines
1.2 KiB
C#

using System.Net;
using System.Net.Quic;
using DTLib.Logging;
namespace Meum.Client;
public class ServerConnection : IAsyncDisposable
{
private readonly QuicConnection _quicConnection;
private readonly ILogger _logger;
public DnsEndPoint ServerEndPoint { get; }
private ServerConnection(QuicConnection quicConnection, DnsEndPoint serverEndPoint, ILogger logger)
{
ServerEndPoint = serverEndPoint;
_quicConnection = quicConnection;
_logger = logger;
}
public static async Task<ServerConnection> OpenAsync(QuicConnection quicConnection,
DnsEndPoint serverEndPoint,
ILogger logger,
CancellationToken ct)
{
var serverConnection = new ServerConnection(quicConnection, serverEndPoint, logger);
var systemStream = await quicConnection.OpenStreamAsync(QuicStreamType.Bidirectional, ct);
await systemStream.SendPingReceivePong();
return serverConnection;
}
public override int GetHashCode()
{
return _quicConnection.RemoteEndPoint.GetHashCode();
}
public async ValueTask DisposeAsync()
{
await _quicConnection.DisposeAsync();
}
}