Esempio n. 1
0
 private void Send()
 {
     if (Sending == false)
     {
         if (msg.Count() > 0)
         {
             Sending = true;
             Msg m = msg.Dequeue();
             if (m != null)
             {
                 byte[] buf = m.Serialize_Msg();
                 if (socket.CheckConnect())
                 {
                     socket.SendAsync(buf, (ok) =>
                     {
                         if (ok)
                         {
                             Sending = false;
                         }
                     });
                 }
                 else
                 {
                     msg.Enqueue(m);
                 }
             }
         }
     }
 }//end send
 public void Send()
 {
     if (msg.Count() > 0)
     {
         Msg m = msg.Dequeue();
         if (m != null)
         {
             byte[] buf = m.Serialize_Msg();
             socket.Send(buf);
             Thread.Sleep(10);
         }
     }
 }
Esempio n. 3
0
        public Task Execute(IJobExecutionContext context)
        {
            return(Task.Run(async() =>
            {
                RawMsg msg = null;
                int sec = 0;
                do
                {
                    msg = _queue.Dequeue();
                    if (msg == null)
                    {
                        Thread.Sleep(TimeSpan.FromSeconds(1));
                        sec++;
                    }
                } while (msg == null && sec < 60);
                if (msg != null)
                {
                    using (var _dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>())
                    {
                        var device = _dbContext.Device.FirstOrDefault(d => d.Id == msg.DeviceId);

                        if (device != null)
                        {
                            switch (msg.DataCatalog)
                            {
                            case DataCatalog.AttributeData:
                                var result2 = await _dbContext.SaveAsync <AttributeLatest>(msg.MsgBody, device.Id, msg.DataSide);
                                result2.exceptions?.ToList().ForEach(ex =>
                                {
                                    _logger.LogError($"{ex.Key} {ex.Value} {Newtonsoft.Json.JsonConvert.SerializeObject(msg.MsgBody[ex.Key])}");
                                });
                                _logger.LogInformation($"更新{device.Name}({device.Id})属性数据结果{result2.ret}");
                                break;

                            case DataCatalog.TelemetryData:
                                bool sta = await _storage.StoreTelemetryAsync(msg);
                                _logger.LogInformation($"新增{device.Name}({device.Id})遥测数据{sta}");
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }));
        }
Esempio n. 4
0
        public Task Execute(IJobExecutionContext context)
        {
            return(Task.Run(async() =>
            {
                var msg = _queue.Dequeue();
                if (msg != null)
                {
                    using (var _dbContext = scope.ServiceProvider.GetRequiredService <ApplicationDbContext>())
                    {
                        var device = _dbContext.Device.FirstOrDefault(d => d.Id == msg.DeviceId);

                        if (device != null)
                        {
                            switch (msg.DataCatalog)
                            {
                            case DataCatalog.AttributeData:
                                var result2 = await _dbContext.SaveAsync <AttributeLatest, AttributeData>(msg.MsgBody, device, msg.DataSide);
                                if (result2.exceptions?.Count > 0)
                                {
                                    _logger.LogError(Newtonsoft.Json.JsonConvert.SerializeObject(msg.MsgBody));
                                }
                                _logger.LogInformation(Newtonsoft.Json.JsonConvert.SerializeObject(result2));
                                break;

                            case DataCatalog.TelemetryData:
                                var result1 = await _dbContext.SaveAsync <TelemetryLatest, TelemetryData>(msg.MsgBody, device, msg.DataSide);
                                if (result1.exceptions?.Count > 0)
                                {
                                    _logger.LogError(Newtonsoft.Json.JsonConvert.SerializeObject(msg.MsgBody));
                                }
                                _logger.LogInformation(Newtonsoft.Json.JsonConvert.SerializeObject(result1));
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }));
        }