using System.Threading.Channels; namespace CoreAgent.WebSocketTransport.Interfaces; /// /// 消息通道接口,用于抽象消息队列操作 /// /// 消息类型 public interface IMessageChannel : IDisposable { /// /// 获取通道容量 /// int Capacity { get; } /// /// 获取当前队列长度 /// int Count { get; } /// /// 获取通道是否已完成 /// bool IsCompleted { get; } /// /// 异步添加消息到队列 /// /// 消息 /// 取消令牌 /// 写入任务 ValueTask WriteAsync(T message, CancellationToken cancellationToken = default); /// /// 尝试添加消息到队列(非阻塞) /// /// 消息 /// 是否成功添加 bool TryWrite(T message); /// /// 异步读取消息 /// /// 取消令牌 /// 消息 ValueTask ReadAsync(CancellationToken cancellationToken = default); /// /// 尝试读取消息(非阻塞) /// /// 输出消息 /// 是否成功读取 bool TryRead(out T message); /// /// 等待消息可读 /// /// 取消令牌 /// 是否有数据可读 ValueTask WaitToReadAsync(CancellationToken cancellationToken = default); /// /// 完成通道,不再接受新消息 /// void Complete(); /// /// 清空队列中的所有消息 /// void Clear(); }