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