diff --git a/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs b/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs index 2bff7dd..6cca2a4 100644 --- a/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs +++ b/src/JT808.DotNetty/Handlers/JT808ServerHandler.cs @@ -50,21 +50,20 @@ namespace JT808.DotNetty.Handlers try { jT808SourcePackageDispatcher?.SendAsync(msg); - //在压力大的情况下可以只解析到头部 - //然后根据具体的消息Id通过队列去进行消费 - //JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg); - JT808Package jT808Package = JT808Serializer.Deserialize(msg); + //解析到头部,然后根据具体的消息Id通过队列去进行消费 + //要是一定要解析到数据体可以在JT808MsgIdHandlerBase类中根据具体的消息, + //解析具体的消息体,具体调用JT808Serializer.Deserialize + JT808HeaderPackage jT808HeaderPackage = JT808Serializer.Deserialize(msg); jT808AtomicCounterService.MsgSuccessIncrement(); if (logger.IsEnabled(LogLevel.Debug)) { logger.LogDebug("accept package success count<<<" + jT808AtomicCounterService.MsgSuccessCount.ToString()); } - jT808SessionManager.TryAdd(new JT808Session(ctx.Channel, jT808Package.Header.TerminalPhoneNo)); + jT808SessionManager.TryAdd(new JT808Session(ctx.Channel, jT808HeaderPackage.Header.TerminalPhoneNo)); Func handlerFunc; - if (handler.HandlerDict.TryGetValue(jT808Package.Header.MsgId, out handlerFunc)) + if (handler.HandlerDict.TryGetValue(jT808HeaderPackage.Header.MsgId, out handlerFunc)) { - //JT808Response jT808Response = handlerFunc(new JT808Request(jT808HeaderPackage, msg)); - JT808Response jT808Response = handlerFunc(new JT808Request(jT808Package, msg)); + JT808Response jT808Response = handlerFunc(new JT808Request(jT808HeaderPackage, msg)); if (jT808Response != null) { if (!jT808TransmitAddressFilterService.ContainsKey(ctx.Channel.RemoteAddress)) diff --git a/src/JT808.DotNetty/JT808MsgIdHandlerBase.cs b/src/JT808.DotNetty/JT808MsgIdHandlerBase.cs index a6719bf..332698b 100644 --- a/src/JT808.DotNetty/JT808MsgIdHandlerBase.cs +++ b/src/JT808.DotNetty/JT808MsgIdHandlerBase.cs @@ -1,10 +1,6 @@ using System; -using System.Collections; using System.Collections.Generic; -using System.Text; -using DotNetty.Transport.Channels; using JT808.DotNetty.Metadata; -using JT808.Protocol; using JT808.Protocol.Enums; using JT808.Protocol.Extensions; using JT808.Protocol.MessageBody; @@ -14,8 +10,10 @@ namespace JT808.DotNetty /// /// 抽象消息处理业务 /// 自定义消息处理业务 - /// ConfigureServices: + /// 注意: + /// 1.ConfigureServices: /// services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase),typeof(JT808MsgIdCustomHandlerImpl),ServiceLifetime.Singleton)); + /// 2.解析具体的消息体,具体消息调用具体的JT808Serializer.Deserialize /// public abstract class JT808MsgIdHandlerBase { diff --git a/src/JT808.DotNetty/Metadata/JT808Request.cs b/src/JT808.DotNetty/Metadata/JT808Request.cs index 19734f5..e914a7f 100644 --- a/src/JT808.DotNetty/Metadata/JT808Request.cs +++ b/src/JT808.DotNetty/Metadata/JT808Request.cs @@ -7,16 +7,14 @@ namespace JT808.DotNetty.Metadata { public class JT808Request { - public JT808Package Package { get; set; } + public JT808HeaderPackage Package { get; } + /// + /// 用于消息发送 + /// public byte[] OriginalPackage { get;} - public JT808Request() - { - - } - - public JT808Request(JT808Package package, byte[] originalPackage) + public JT808Request(JT808HeaderPackage package, byte[] originalPackage) { Package = package; OriginalPackage = originalPackage;