TG.WXCRM.V4/WX.CRM.DataSynClient/Client/MyReceiveFilter.cs

63 lines
2.2 KiB
C#

using SuperSocket.ProtoBase;
using System;
using System.Text;
using WX.CRM.Common;
using WX.CRM.Model.EntitySync;
namespace WX.CRM.DataSynClient.Client
{
//internal class BeiginEndReceiveFilter : BeginEndMarkReceiveFilter<StringPackageInfo>
//{
// public BeiginEndReceiveFilter()
// : base(new byte[] { (byte)'/',(byte)'^' }, new byte[] { (byte)'^',(byte)'/' })
// {
// }
// public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
// {
// return new StringPackageInfo("XT", "qwe", null);
// }
//}
internal class MyReceiveFilter : TerminatorReceiveFilter<StringPackageInfo>
{
public MyReceiveFilter() : base(Encoding.UTF8.GetBytes("^^"))
{
}
public override StringPackageInfo ResolvePackage(IBufferStream bufferStream)
{
//throw new NotImplementedException();
//return new StringPackageInfo("qw", "qwe", null);
try
{
var str = bufferStream.ReadString((int)bufferStream.Length, Encoding.UTF8);
//LogHelper.Info("请求数据:" + str);
if (!str.EndsWith("^^"))
return new StringPackageInfo("UnKnow", null, null);
str = str.Remove(str.Length - 2, 2);
//LogHelper.Info("去除协议字符数据:" + str);
var result = str.ToObject<StringPackageInfoDto>();
//var result = Utility.JSONToObject<StringRequestInfo>(str);
//LogHelper.Info("服务端接收到数据:" + result.Key + "," + result.Body);
if (result == null)
return new StringPackageInfo("UnKnow", null, null);
return new StringPackageInfo(result.Key, result.Body.ToJson(), result.Parameters);
}
catch (Exception ex)
{
LogHelper.Error($"解析请求出错:{ex}");
Console.WriteLine(ex.Message);
return null;
}
}
internal class StringPackageInfoDto
{
public string Key { get; set; }
public SYNC_PUSH Body { get; set; }
public string[] Parameters { get; set; }
}
}
}