using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using IStation.Model;
namespace IStation.DataDockingSocket
{
public class HandleHelper : IDataDockingSocket.IHandleHelper
{
///
/// 处理注册码
///
public void HandleRegisterCode(IMonitorDataDockingSession session)
{
if (session == null)
return;
if (!session.IsConnected)
return;
if (SessionHelper.Cache != null)
{
if (SessionHelper.Cache != session)
{
if (SessionHelper.Cache.IsConnected)
{
SessionHelper.Cache.Close($"{session.SessionName} 中,产生新的会话!");
}
}
}
SessionHelper.Cache = session;
var appParas = AppParasHelper.Get();
if (appParas == null)
{
LogCustomHelper.Error("Socket 数据对接中,KQ 缺少数据对接配置文件");
return;
}
foreach (var item in appParas.InstructionItems)
{
SendInstructionJobHelper.StartJob(session, item);
Thread.Sleep(appParas.InstructionSendSpace * 1000);
}
}
///
/// 处理心跳包
///
public void HandleHeartbeat(IMonitorDataDockingSession session)
{
}
///
/// 处理数据
///
public void HandleData
(
IMonitorDataDockingSession session,
byte[] bytes,
List mappers,
Action> receive
)
{
if (session == null)
return;
if (!session.IsConnected)
return;
if (bytes == null)
return;
if (!AppParas.Verify(bytes))
{
return;
}
if (mappers == null || mappers.Count < 1)
{
return;
}
var appParas = AppParasHelper.Get();
if (appParas == null)
{
LogCustomHelper.Error("Socket 数据对接中,SZJT.Ten 缺少数据对接配置文件");
return;
}
var item = appParas.InstructionItems.Find(x => x.Verify(bytes));
if (item == null)
return;
var src_list = HandleDataHelper.HandleData(item, bytes);
if (src_list != null && src_list.Count > 0)
{
var receive_list = new List();
foreach (var mapper in mappers)
{
var src = src_list.Find(x => x.SignId == mapper.SignId);
if (src != null)
{
var record = new Model.MonitorDataDockingReceiveRecord();
record.SysId = mapper.SysId;
record.RecordType = src.RecordType;
record.SrcTime = src.SrcTime;
record.SrcValue = src.SrcValue;
receive_list.Add(record);
}
}
receive(receive_list);
}
if (appParas.Src)
{
LogCustomHelper.Src(bytes);
}
if (appParas.Debug)
{
LogCustomHelper.Debug(src_list);
}
}
public bool Valid(byte[] bytes)
{
return false;
}
}
}