using System; using System.Threading; using System.Threading.Tasks; namespace Aging.Infrastructure.Drivers { /// /// CAN 驱动传输后端抽象:屏蔽 Local(TCP 直连模拟器) 与 Broker(命名管道委托宿主) 差异。 /// 上层 只与本接口交互,命令串语义原样透传。 /// internal interface ICanTransport : IDisposable { /// 后端是否处于可用连接态 bool IsConnected { get; } /// 建立通道(TCP 连接 + HELLO 挂载 / Broker CONNECT 注册物理会话) Task ConnectAsync(string busName, int nodeIndex, CancellationToken ct); /// 断开当前节点挂载(TCP DISCONNECT / Broker DISCONNECT) Task DisconnectAsync(); /// /// 发送一行命令并等待响应行。line 为完整命令串(SEND:… 或 QUERY:…)。 /// 返回响应文本(含 OK:/ERR: 前缀,由上层解析);超时/断线抛异常。 /// Task TransceiveAsync(string line, CancellationToken ct); /// 服务端推送的 EV:RECV 行到达(NodeChannel 为 TCP 直推;BrokerRpc 为随响应捎带) event Action FramePushed; /// 通道断裂事件(触发上层重连/状态更新) event Action TransportBroken; } }