95 lines
2.6 KiB
C#
Raw Normal View History

2025-07-16 09:20:13 +08:00
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>
/// TCP消息内容接收事件 - 传递实际的消息内容
/// </summary>
event Func<object, bool>? TcpMessageReceived;
2025-07-16 09:20:13 +08:00
/// <summary>
/// 连接状态变化事件
/// </summary>
event Action<bool, string>? ConnectionStatusChanged;
/// <summary>
/// 连接成功事件
/// </summary>
event Action? ConnectionSucceeded;
2025-07-16 09:20:13 +08:00
/// <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();
/// <summary>
/// 手动重连
/// </summary>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>重连任务</returns>
Task ReconnectAsync(CancellationToken cancellationToken = default);
/// <summary>
/// 确保连接状态,如果断开则尝试重连
/// </summary>
/// <param name="cancellationToken">取消令牌</param>
/// <returns>连接检查任务</returns>
Task EnsureConnectedAsync(CancellationToken cancellationToken = default);
2025-07-16 09:20:13 +08:00
}
}