1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-09-06 16:53:11 +02:00
Files
Minecraft-Phantom-Panel/Utils/Phantom.Utils.Rpc/New/RpcClientConnection.cs

31 lines
992 B
C#

using System.Threading.Channels;
using Phantom.Utils.Logging;
using Serilog;
namespace Phantom.Utils.Rpc.New;
public class RpcClientConnection<TClientToServerMessage>(string loggerName, CancellationToken shutdownCancellationToken) : IAsyncDisposable {
private readonly ILogger logger = PhantomLogger.Create<RpcClientConnection<TClientToServerMessage>>(loggerName);
private readonly Channel<TClientToServerMessage> sendQueue = Channel.CreateBounded<TClientToServerMessage>(new BoundedChannelOptions(500) {
AllowSynchronousContinuations = false,
FullMode = BoundedChannelFullMode.Wait,
SingleReader = true,
SingleWriter = false,
});
public async Task WaitFor() {
}
public async Task Send(TClientToServerMessage message, CancellationToken cancellationToken) {
if (!sendQueue.Writer.TryWrite(message)) {
await sendQueue.Writer.WriteAsync(message, cancellationToken);
}
}
public async ValueTask DisposeAsync() {
// TODO release managed resources here
}
}