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();
}