using System.Net.Sockets;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_Tasks.Workflow.Abstractions;
namespace WIDESEAWCS_Tasks.SocketServer
{
///
/// TcpSocketServer 的网关实现
///
///
/// 实现 ISocketClientGateway 接口,将底层 TCP 通信细节封装。
/// 使业务层不直接依赖 TcpSocketServer,便于单元测试和替换实现。
///
public class SocketClientGateway : ISocketClientGateway
{
///
/// TCP Socket 服务器实例
///
private readonly TcpSocketServer _tcpSocket;
///
/// 构造函数
///
/// TCP Socket 服务器实例
public SocketClientGateway(TcpSocketServer tcpSocket)
{
_tcpSocket = tcpSocket;
}
///
/// 异步发送消息到指定客户端
///
/// 目标客户端 ID
/// 消息内容
/// 发送是否成功
public Task SendToClientAsync(string clientId, string message)
{
return _tcpSocket.SendToClientAsync(clientId, message);
}
///
/// 通过 TcpClient 发送消息
///
/// TCP 客户端连接
/// 消息内容
public Task SendMessageAsync(TcpClient client, string message)
{
return _tcpSocket.SendMessageAsync(client, message);
}
///
/// 获取所有已连接客户端 ID
///
/// 客户端 ID 列表
public IReadOnlyList GetClientIds()
{
return _tcpSocket.GetClientIds();
}
///
/// 处理客户端连接的消息循环
///
/// TCP 客户端连接
/// 客户端 ID
/// 取消令牌
/// 机器人状态
/// 任务
public Task HandleClientAsync(TcpClient client, string clientId, CancellationToken cancellationToken, RobotSocketState robotCrane)
{
return _tcpSocket.HandleClientAsync(client, clientId, cancellationToken, robotCrane);
}
}
}