public override void ChannelRead(IChannelHandlerContext context, object message)
        {
            var jT808RequestInfo = (JT808RequestInfo)message;

            SourcePackageDispatcher?.SendAsync(jT808RequestInfo.OriginalBuffer);
            string receive = string.Empty;

            try
            {
                if (logger.IsEnabled(LogLevel.Debug))
                {
                    receive = jT808RequestInfo.OriginalBuffer.ToHexString();
                }
                Func <JT808RequestInfo, IChannelHandlerContext, IJT808Package> handlerFunc;
                if (jT808RequestInfo.JT808Package != null)
                {
                    if (jT808MsgIdHandler.HandlerDict.TryGetValue(jT808RequestInfo.JT808Package.Header.MsgId, out handlerFunc))
                    {
                        IJT808Package jT808PackageImpl = handlerFunc(jT808RequestInfo, context);
                        if (jT808PackageImpl != null)
                        {
                            if (logger.IsEnabled(LogLevel.Debug))
                            {
                                logger.LogDebug("send>>>" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JT808Serializer.Serialize(jT808PackageImpl.JT808Package).ToHexString());
                                //logger.LogDebug("send>>>" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(jT808PackageImpl.JT808Package));
                            }
                            // 需要注意:
                            // 1.下发应答必须要在类中重写 ChannelReadComplete 不然客户端接收不到消息
                            // context.WriteAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808PackageImpl.JT808Package)));
                            // 2.直接发送
                            context.WriteAndFlushAsync(Unpooled.WrappedBuffer(JT808Serializer.Serialize(jT808PackageImpl.JT808Package)));
                        }
                    }
                }
            }
            catch (JT808Exception ex)
            {
                if (logger.IsEnabled(LogLevel.Error))
                {
                    logger.LogError(ex, "JT808Exception receive<<<" + receive);
                }
            }
            catch (Exception ex)
            {
                if (logger.IsEnabled(LogLevel.Error))
                {
                    logger.LogError(ex, "Exception receive<<<" + receive);
                }
            }
        }
示例#2
0
        public override void ExecuteCommand(JT808Session <JT808RequestInfo> session, JT808RequestInfo requestInfo)
        {
            var JT808Server = (JT808Server)session.AppServer;

            JT808Server.SourcePackageDispatcher?.SendAsync(requestInfo.OriginalBuffer);
            if (requestInfo.JT808Package == null)
            {
                return;
            }
            JT808Server.DeviceMonitoringDispatcher?.SendAsync(requestInfo.JT808Package.Header.TerminalPhoneNo, requestInfo.OriginalBuffer);
            session.TerminalPhoneNo = requestInfo.JT808Package.Header.TerminalPhoneNo;
            string receive = requestInfo.OriginalBuffer.ToHexString();

            //session.Logger.Debug("receive-" + receive);
            //session.Logger.Debug("receive-" + requestInfo.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(requestInfo.JT808Package));
            try
            {
                Func <JT808RequestInfo, JT808Session <JT808RequestInfo>, IJT808Package> handlerFunc;
                if (JT808Server.JT808MsgIdHandler.HandlerDict.TryGetValue(requestInfo.JT808Package.Header.MsgId, out handlerFunc))
                {
                    IJT808Package jT808PackageImpl = handlerFunc(requestInfo, session);
                    if (jT808PackageImpl != null)
                    {
                        session.Logger.Debug("send-" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JT808Serializer.Serialize(jT808PackageImpl.JT808Package).ToHexString());
                        //session.Logger.Debug("send-" + jT808PackageImpl.JT808Package.Header.MsgId.ToString() + "-" + JsonConvert.SerializeObject(jT808PackageImpl.JT808Package));
                        session.TrySend(jT808PackageImpl);
                    }
                }
            }
            catch (JT808Exception ex)
            {
                session.Logger.Error("JT808Exception receive-" + receive);
                session.Logger.Error(ex.Message, ex);
            }
            catch (Exception ex)
            {
                session.Logger.Error("Exception receive-" + receive);
                session.Logger.Error(ex);
            }
        }
示例#3
0
 public bool TrySend(IJT808Package jT808Package)
 {
     byte[] sendData = JT808Serializer.Serialize(jT808Package.JT808Package);
     return(base.TrySend(sendData, 0, sendData.Length));
 }