using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Model.Model;
namespace DeviceCommand.Base
{
///
/// Enova3 通道数据接收事件参数
///
public class EnovaChannelDataReceivedEventArgs : EventArgs
{
public List DataList { get; }
public DateTime ReceivedTime { get; }
public EnovaChannelDataReceivedEventArgs(List dataList)
{
DataList = dataList ?? new List();
ReceivedTime = DateTime.Now;
}
}
///
/// Enova3 上位机数据上报 / 接收核心接口
/// 既支持上位机主动推送数据到客户平台,也支持接收下位机通过 HTTP POST 上报的数据
///
public interface IEnovaDataReporter
{
///
/// 客户平台接收数据的目标 HTTP URL(用于主动推送)
///
string TargetUrl { get; set; }
///
/// HTTP 请求超时时间(毫秒)
///
int TimeoutMilliseconds { get; set; }
///
/// 当 EnovaDataController 收到下位机 POST 上报的数据时触发
///
event EventHandler ChannelDataReceived;
///
/// 异步推送通道的实时状态数据到客户平台
///
/// 包含各通道状态的采集数据集合
/// 取消令牌
/// 平台服务器的响应状态
Task ReportChannelStateAsync(List dataList, CancellationToken ct = default);
///
/// 处理 EnovaDataController 转发过来的下位机上报数据
/// 由 Controller 在收到 HTTP POST 后调用,内部会触发 事件
///
/// 下位机上报的通道数据集合
/// 处理结果,将作为 HTTP 响应返回给下位机
ApiResponse HandleIncomingChannelData(List dataList);
}
}