NahidaImpact/NahidaImpact.Gameserver/Network/Kcp/KcpNetworkUnit.cs

30 lines
897 B
C#
Raw Permalink Normal View History

2024-01-04 13:48:39 +00:00
using System.Net;
using NahidaImpact.Kcp;
namespace NahidaImpact.Gameserver.Network.Kcp;
internal class KcpNetworkUnit(KcpConversation conversation, IPEndPoint remoteEndPoint) : INetworkUnit
{
public IPEndPoint RemoteEndPoint { get; } = remoteEndPoint;
private readonly KcpConversation _conversation = conversation;
public async ValueTask<int> ReceiveAsync(Memory<byte> buffer, CancellationToken cancellationToken)
{
KcpConversationReceiveResult result = await _conversation.ReceiveAsync(buffer, cancellationToken);
if (result.TransportClosed)
return -1;
return result.BytesReceived;
}
public async ValueTask SendAsync(Memory<byte> buffer, CancellationToken cancellationToken)
{
await _conversation.SendAsync(buffer, cancellationToken);
}
public void Dispose()
{
_conversation.Dispose();
}
}