using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IStation.Untity;
using IStation.Model;
using SuperSocket.Server;
using SuperSocket;
namespace IStation.Server
{
///
/// 接收信息辅助类
///
internal class RequestReceivedHelper
{
//接收数据
public static async ValueTask Receive(IAppSession session, PackageInfo packageInfo)
{
await Task.Run(async () =>
{
if (packageInfo == null)
return;
switch (packageInfo.Header.Type)
{
case eDatagramType.心跳接口:
{
await session.SendAsync(new ReadOnlyMemory(packageInfo.HeaderBuffer));
LogHelper.Info($"{session.RemoteEndPoint}:发送心跳包.");
}
break;
case eDatagramType.波形数据接口:
{
LogHelper.Info($"{session.RemoteEndPoint}:发送波形数据包.");
var model = BodyWave.Get(packageInfo.BodyBuffer);
var dt_now = DateTime.Now;
if ((dt_now - model.DataTime).TotalHours > 1)
{
{
//对时
var timeHeader = new Model.Header();
timeHeader.Type = 0;
timeHeader.Memo = BitConverter.GetBytes((int)DateTimeTransfer.ToSeconds(dt_now)).Reverse().ToArray();
timeHeader.KeyNum = 1;
timeHeader.PackLen = 0;
var timeBuffer = timeHeader.GetBuffer();
await session.SendAsync(new ReadOnlyMemory(timeBuffer));
LogHelper.Info($"{session.RemoteEndPoint}-DataTime:{model.DataTime:yyyy-MM-dd HH:mm:ss},触发对时接口.");
}
model.SendTime = dt_now;
model.DataTime = dt_now;
}
if (model.Rpm > 0)
{
LogHelper.Info($"{model.IP}:Rpm:{model.Rpm}");
}
MemoryQueueHelper.Push(model);
}
break;
case eDatagramType.对时接口:
{
}
break;
case eDatagramType.启停车数据接口:
{
LogHelper.Info($"{session.RemoteEndPoint}:发送启停车数据.");
var model = StartStop.Get(packageInfo.BodyBuffer);
LogHelper.Info($"{session.RemoteEndPoint}-{JsonHelper.Object2Json(model)}");
}
break;
default: break;
}
});
}
}
}