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; namespace JT808.DotNetty { /// /// 抽象消息处理业务 /// 自定义消息处理业务 /// ConfigureServices: /// services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase),typeof(JT808MsgIdCustomHandlerImpl),ServiceLifetime.Singleton)); /// public abstract class JT808MsgIdHandlerBase { protected JT808SessionManager sessionManager { get; } /// /// 初始化消息处理业务 /// protected JT808MsgIdHandlerBase(JT808SessionManager sessionManager) { this.sessionManager = sessionManager; HandlerDict = new Dictionary> { {JT808MsgId.终端通用应答, Msg0x0001}, {JT808MsgId.终端鉴权, Msg0x0102}, {JT808MsgId.终端心跳, Msg0x0002}, {JT808MsgId.终端注销, Msg0x0003}, {JT808MsgId.终端注册, Msg0x0100}, {JT808MsgId.位置信息汇报,Msg0x0200 }, {JT808MsgId.定位数据批量上传,Msg0x0704 }, {JT808MsgId.数据上行透传,Msg0x0900 } }; } public Dictionary> HandlerDict { get; } /// /// 终端通用应答 /// /// /// /// public virtual JT808Response Msg0x0001(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 终端心跳 /// /// /// /// public virtual JT808Response Msg0x0002(JT808Request request) { sessionManager.Heartbeat(request.Package.Header.TerminalPhoneNo); return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 终端注销 /// /// /// /// public virtual JT808Response Msg0x0003(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 终端注册 /// /// /// /// public virtual JT808Response Msg0x0100(JT808Request request) { return new JT808Response(JT808MsgId.终端注册应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8100() { Code = "J" + request.Package.Header.TerminalPhoneNo, JT808TerminalRegisterResult = JT808TerminalRegisterResult.成功, MsgNum = request.Package.Header.MsgNum })); } /// /// 终端鉴权 /// /// /// /// public virtual JT808Response Msg0x0102(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 位置信息汇报 /// /// /// /// public virtual JT808Response Msg0x0200(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 定位数据批量上传 /// /// /// /// public virtual JT808Response Msg0x0704(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } /// /// 数据上行透传 /// /// /// /// public virtual JT808Response Msg0x0900(JT808Request request) { return new JT808Response(JT808MsgId.平台通用应答.Create(request.Package.Header.TerminalPhoneNo, new JT808_0x8001() { MsgId = request.Package.Header.MsgId, JT808PlatformResult = JT808PlatformResult.Success, MsgNum = request.Package.Header.MsgNum })); } } }