wenxiangchao
3 天以前 b544d5cccd76735e034c8055918a50927b437474
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Threading;
using System.Threading.Tasks;
 
namespace Aging.Infrastructure.Drivers
{
    /// <summary>
    /// CAN 驱动传输后端抽象:屏蔽 Local(TCP 直连模拟器) 与 Broker(命名管道委托宿主) 差异。
    /// 上层 <see cref="CanDeviceDriver"/> 只与本接口交互,命令串语义原样透传。
    /// </summary>
    internal interface ICanTransport : IDisposable
    {
        /// <summary>后端是否处于可用连接态</summary>
        bool IsConnected { get; }
 
        /// <summary>建立通道(TCP 连接 + HELLO 挂载 / Broker CONNECT 注册物理会话)</summary>
        Task ConnectAsync(string busName, int nodeIndex, CancellationToken ct);
 
        /// <summary>断开当前节点挂载(TCP DISCONNECT / Broker DISCONNECT)</summary>
        Task DisconnectAsync();
 
        /// <summary>
        /// 发送一行命令并等待响应行。line 为完整命令串(SEND:… 或 QUERY:…)。
        /// 返回响应文本(含 OK:/ERR: 前缀,由上层解析);超时/断线抛异常。
        /// </summary>
        Task<string> TransceiveAsync(string line, CancellationToken ct);
 
        /// <summary>服务端推送的 EV:RECV 行到达(NodeChannel 为 TCP 直推;BrokerRpc 为随响应捎带)</summary>
        event Action<string> FramePushed;
 
        /// <summary>通道断裂事件(触发上层重连/状态更新)</summary>
        event Action TransportBroken;
    }
}