Example #1
0
        private void ProcessMessageThread()
        {
            ThreadProcessor.Auto();
            log.InfoFormat("开始对终端消息进行应答处理 {0}", Thread.CurrentThread.ManagedThreadId);
            Tuple <AsyncSocketConnection, TPKGHead> rd = null;
            HiPerfTimer timer = new HiPerfTimer();

            while (_isWorking)
            {
                if (ackQueue.TryDequeue(out rd) == false)//开始从对列中取接收到的数据进行处理
                {
                    Thread.Sleep(50);
                    continue;
                }
                try
                {
                    //服务端

                    timer.Start();
                    FireWaitHandle(rd.Item2);
                    var rs = PacketProcessorManager.DoProcess(rd.Item1, rd.Item2).GetAwaiter().GetResult();
                    if (rd.Item2.Flags.HasFlag(TPKGHeadFlags.CON))
                    {
                        PacketProcessorBase.SendCommonResponseMessage(rd.Item1, rd.Item2, rs == true ? 0 : 1);
                    }
                    timer.Stop();
                    packetCounts.AddOrUpdate(rd.Item2.CommandId, 1, (o, v) => ++ v);
                    packetTime.AddOrUpdate(rd.Item2.CommandId, timer.Duration, (o, v) => v + timer.Duration);
                    packetCounts30s.AddOrUpdate(rd.Item2.CommandId, 1, (o, v) => ++ v);
                    packetTime30s.AddOrUpdate(rd.Item2.CommandId, timer.Duration, (o, v) => v + timer.Duration);
                }
                catch (Exception ex)
                {
                    log.Error(ex);
                }
                Interlocked.Increment(ref processedMessageCount);
            }
        }
Example #2
0
 public MqttSampleService(PacketProcessorManager processorManager, MqttClientSessionManager sessionManager, ILoggerFactory loggerFactory)
     : base(processorManager, sessionManager, loggerFactory)
 {
     logger = loggerFactory.CreateLogger <MqttSampleService>();
 }