public JT808MessageHandler( IOptionsMonitor <JT808Configuration> jT808ConfigurationOptionsMonitor, IJT808MsgProducer msgProducer, IJT808Config jT808Config) { this.JT808Serializer = jT808Config.GetSerializer(); this.MsgProducer = msgProducer; this.JT808ConfigurationOptionsMonitor = jT808ConfigurationOptionsMonitor; HandlerDict = new Dictionary <ushort, MsgIdMethodDelegate> { { JT808MsgId.终端通用应答.ToUInt16Value(), Msg0x0001 }, { JT808MsgId.终端鉴权.ToUInt16Value(), Msg0x0102 }, { JT808MsgId.终端心跳.ToUInt16Value(), Msg0x0002 }, { JT808MsgId.终端注销.ToUInt16Value(), Msg0x0003 }, { JT808MsgId.终端注册.ToUInt16Value(), Msg0x0100 }, { JT808MsgId.位置信息汇报.ToUInt16Value(), Msg0x0200 }, { JT808MsgId.定位数据批量上传.ToUInt16Value(), Msg0x0704 }, { JT808MsgId.数据上行透传.ToUInt16Value(), Msg0x0900 }, { JT808MsgId.查询服务器时间请求.ToUInt16Value(), Msg0x0004 }, { JT808MsgId.查询终端参数应答.ToUInt16Value(), Msg0x0104 }, { JT808MsgId.查询终端属性应答.ToUInt16Value(), Msg0x0107 }, { JT808MsgId.终端升级结果通知.ToUInt16Value(), Msg0x0108 }, { JT808MsgId.位置信息查询应答.ToUInt16Value(), Msg0x0201 }, { JT808MsgId.链路检测.ToUInt16Value(), Msg0x8204 }, { JT808MsgId.车辆控制应答.ToUInt16Value(), Msg0x0500 }, { JT808MsgId.摄像头立即拍摄命令.ToUInt16Value(), Msg0x8801 }, { JT808MsgId.多媒体数据上传.ToUInt16Value(), Msg0x0801 }, { JT808MsgId.多媒体事件信息上传.ToUInt16Value(), Msg0x0800 }, { JT808MsgId.CAN总线数据上传.ToUInt16Value(), Msg0x0705 }, }; }
public JT808TcpServerHandler( IJT808MsgProducer jT808MsgProducer, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory, JT808SessionManager jT808SessionManager) { this.jT808SessionManager = jT808SessionManager; this.JT808MsgProducer = jT808MsgProducer; this.jT808AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp); this.JT808Serializer = jT808Config.GetSerializer(); logger = loggerFactory.CreateLogger <JT808TcpServerHandler>(); }
public JT808MessageHandlerImpl( ILoggerFactory loggerFactory, JT808TransmitService jT808TransmitService, IJT808MsgLogging jT808MsgLogging, IOptionsMonitor <JT808Configuration> jT808ConfigurationOptionsMonitor, IJT808MsgProducer msgProducer, IJT808MsgReplyLoggingProducer msgReplyLoggingProducer, IJT808Config jT808Config) : base(jT808Config) { this.jT808TransmitService = jT808TransmitService; this.jT808MsgLogging = jT808MsgLogging; logger = loggerFactory.CreateLogger <JT808MessageHandlerImpl>(); //添加自定义消息 HandlerDict.Add(0x9999, Msg0x9999); }
/// <summary> /// 使用队列方式 /// </summary> /// <param name="jT808ConfigurationAccessor"></param> /// <param name="jT808Config"></param> /// <param name="loggerFactory"></param> /// <param name="jT808SessionManager"></param> /// <param name="jT808MsgProducer"></param> /// <param name="jT808AtomicCounterServiceFactory"></param> public JT808TcpServer( IOptions <JT808Configuration> jT808ConfigurationAccessor, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808SessionManager jT808SessionManager, IJT808MsgProducer jT808MsgProducer, JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory) { SessionManager = jT808SessionManager; Logger = loggerFactory.CreateLogger("JT808TcpServer"); Serializer = jT808Config.GetSerializer(); MsgProducer = jT808MsgProducer; AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp); Configuration = jT808ConfigurationAccessor.Value; JT808UseType = JT808UseType.Queue; InitServer(); }
public JT808UdpServer( JT808Configuration jT808Configuration, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808SessionManager jT808SessionManager, IJT808MsgProducer jT808MsgProducer, JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory) { SessionManager = jT808SessionManager; Logger = loggerFactory.CreateLogger("JT808UdpServer"); Serializer = jT808Config.GetSerializer(); MsgProducer = jT808MsgProducer; AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.udp); Configuration = jT808Configuration; LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, jT808Configuration.UdpPort); server = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); server.Bind(LocalIPEndPoint); }
/// <summary> /// 使用队列方式 /// </summary> /// <param name="configurationMonitor"></param> /// <param name="msgProducer"></param> /// <param name="msgReplyLoggingProducer"></param> /// <param name="messageHandler"></param> /// <param name="jT808Config"></param> /// <param name="loggerFactory"></param> /// <param name="jT808SessionManager"></param> public JT808TcpServer( IOptionsMonitor <JT808Configuration> configurationMonitor, IJT808MsgProducer msgProducer, IJT808MsgReplyLoggingProducer msgReplyLoggingProducer, JT808MessageHandler messageHandler, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808SessionManager jT808SessionManager) { MessageHandler = messageHandler; MsgProducer = msgProducer; MsgReplyLoggingProducer = msgReplyLoggingProducer; ConfigurationMonitor = configurationMonitor; SessionManager = jT808SessionManager; Logger = loggerFactory.CreateLogger <JT808TcpServer>(); Serializer = jT808Config.GetSerializer(); InitServer(); }
public JT808UdpServer( IOptionsMonitor <JT808Configuration> configurationMonitor, IJT808MsgProducer msgProducer, IJT808MsgReplyLoggingProducer msgReplyLoggingProducer, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808SessionManager jT808SessionManager, JT808MessageHandler messageHandler) { SessionManager = jT808SessionManager; MsgProducer = msgProducer; ConfigurationMonitor = configurationMonitor; MsgReplyLoggingProducer = msgReplyLoggingProducer; Logger = loggerFactory.CreateLogger <JT808UdpServer>(); Serializer = jT808Config.GetSerializer(); MessageHandler = messageHandler; LocalIPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, ConfigurationMonitor.CurrentValue.UdpPort); server = new Socket(LocalIPEndPoint.AddressFamily, SocketType.Dgram, ProtocolType.Udp); server.Bind(LocalIPEndPoint); }
public JT808TcpServer( JT808Configuration jT808Configuration, IJT808Config jT808Config, ILoggerFactory loggerFactory, JT808SessionManager jT808SessionManager, IJT808MsgProducer jT808MsgProducer, JT808AtomicCounterServiceFactory jT808AtomicCounterServiceFactory) { SessionManager = jT808SessionManager; Logger = loggerFactory.CreateLogger("JT808TcpServer"); Serializer = jT808Config.GetSerializer(); MsgProducer = jT808MsgProducer; AtomicCounterService = jT808AtomicCounterServiceFactory.Create(JT808TransportProtocolType.tcp); Configuration = jT808Configuration; var IPEndPoint = new System.Net.IPEndPoint(IPAddress.Any, jT808Configuration.TcpPort); server = new Socket(IPEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, true); server.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); server.LingerState = new LingerOption(false, 0); server.Bind(IPEndPoint); server.Listen(jT808Configuration.SoBacklog); }