2025-08-07 14:49:24 +08:00

76 lines
1.9 KiB
C#

using System;
using System.Threading;
using System.Threading.Tasks;
using Newtonsoft.Json.Linq;
using YunDa.Server.ISMSTcp.Models;
namespace YunDa.Server.ISMSTcp.Interfaces
{
/// <summary>
/// TCP客户端接口
/// </summary>
public interface ITcpClient : IDisposable
{
/// <summary>
/// 连接状态
/// </summary>
bool IsConnected { get; }
/// <summary>
/// TCP响应接收事件
/// </summary>
event Func<object, bool>? TcpResponseReceived;
/// <summary>
/// 连接状态变化事件
/// </summary>
event Action<bool, string>? ConnectionStatusChanged;
/// <summary>
/// 连接成功事件
/// </summary>
event Action? ConnectionSucceeded;
/// <summary>
/// 消息接收事件
/// </summary>
event Action<string>? MessageReceived;
/// <summary>
/// 命令状态变化事件
/// </summary>
event Action<CommandState?>? CommandStateChanged;
/// <summary>
/// 连接到服务器
/// </summary>
/// <param name="ip">IP地址</param>
/// <param name="port">端口</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>连接任务</returns>
Task ConnectAsync(string ip, int port, CancellationToken cancellationToken = default);
/// <summary>
/// 发送TCP消息
/// </summary>
/// <param name="message">消息内容</param>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>发送结果</returns>
Task<bool> SendMessageAsync(string message, CancellationToken cancellationToken = default);
/// <summary>
/// 启动数据处理
/// </summary>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>处理任务</returns>
Task StartProcessingAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 停止处理
/// </summary>
/// <returns>停止任务</returns>
Task StopAsync();
}
}