LumaTunnel
【WinUI】LumaTunnel 是一个面向个人多设备的 Windows 代理系统。客户端在本机提供 HTTP/HTTPS CONNECT 与 SOCKS5 TCP 代理,并通过一个受信任 TLS 证书保护的 WSS 会话,将多个 TCP 流复用到自建 Windows Server 节点。
关注
0
Fork
0
Star
0
using System.Threading.Channels;
namespace LumaTunnel.Client.Core.Tunnel;
internal sealed class ClientTunnelState(uint streamId)
{
public uint StreamId { get; } = streamId;
public TaskCompletionSource Opened { get; } = new(TaskCreationOptions.RunContinuationsAsynchronously);
public Channel<byte[]> Incoming { get; } = Channel.CreateBounded<byte[]>(new BoundedChannelOptions(32)
{
SingleReader = true,
SingleWriter = true,
FullMode = BoundedChannelFullMode.Wait
});
public void CompleteIncoming() => Incoming.Writer.TryComplete();
public void Complete()
{
Opened.TrySetResult();
Incoming.Writer.TryComplete();
}
public void Fail(Exception exception)
{
Opened.TrySetException(exception);
Incoming.Writer.TryComplete(exception);
}
}
using System.Threading.Channels;
namespace LumaTunnel.Client.Core.Tunnel;
internal sealed class ClientTunnelState(uint streamId)
{
public uint StreamId { get; } = streamId;
public TaskCompletionSource Opened { get; } = new(TaskCreationOptions.RunContinuationsAsynchronously);
public Channel<byte[]> Incoming { get; } = Channel.CreateBounded<byte[]>(new BoundedChannelOptions(32)
{
SingleReader = true,
SingleWriter = true,
FullMode = BoundedChannelFullMode.Wait
});
public void CompleteIncoming() => Incoming.Writer.TryComplete();
public void Complete()
{
Opened.TrySetResult();
Incoming.Writer.TryComplete();
}
public void Fail(Exception exception)
{
Opened.TrySetException(exception);
Incoming.Writer.TryComplete(exception);
}
}