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;
}
}