Esempio n. 1
0
        private static void OnTimedTaskFinished(DACTaskResult result)
        {
            int successedCount = 0;
            var sbR            = new StringBuilder();
            var sbP            = new StringBuilder();

            foreach (var sr in result.SensorResults)
            {
                if (sr.IsOK && sr.Data != null)
                {
                    successedCount++;
                }
                else
                {
                    if (sr.IsOK && sr.Data == null)
                    {
                        sbP.Append(sr.Sensor.SensorID).Append(",");
                    }
                    sbR.Append(sr.Sensor.SensorID).Append(",");
                }
            }
            try
            {
                Log.InfoFormat(
                    "Dtu {7}-{8} Cron task finished. result={0}-{1}, {2} sensors,successed: {4},failed sensors:{5}, parse error sensors:{6}; cost={3} ms",
                    result.ErrorCode,
                    result.ErrorMsg,
                    result.GetSensorCount(),
                    result.Elapsed,
                    successedCount,
                    sbR.Length != 0 ? sbR.ToString().Substring(0, sbR.Length - 1) : string.Empty,
                    sbP.Length != 0 ? sbP.ToString().Substring(0, sbP.Length - 1) : string.Empty, result.Task.DtuID,
                    result.DtuCode);
                DACTaskResultConsumerService.OnDacTaskResultProduced(result);
            }
            catch (Exception ex)
            {
                Log.FatalFormat("Consumer error : {0}", ex.Message);
            }
        }
Esempio n. 2
0
 internal static void SaveTaskResult(DACTaskResult result)
 {
     _dacTaskResultPool.Enqueue(result);
 }
Esempio n. 3
0
        private DACTaskResult ExcuteLocalDacTask(DACTask task, DacTaskContext context)
        {
            DtuNode       dtu  = context.Node;
            DACTaskResult rslt = new DACTaskResult();

            rslt.Task             = task;
            rslt.Task.Status      = DACTaskStatus.RUNNING;
            rslt.ErrorMsg         = "OK";
            rslt.StoragedTimeType = SensorAcqResultTimeType.SensorResponseTime;

            Stopwatch sw = new Stopwatch();

            sw.Start();
            var dtuConn = context.DtuConnection as FileDtuConnection; // 强转成FileDtuConnection

            if (dtuConn != null && dtuConn.Connect())
            {
                try
                {
                    foreach (Sensor si in dtu.Sensors)
                    {
                        if (!this.IsSensorRequired(context, task.Sensors, si))
                        {
                            continue;
                        }

                        var result = this.RequestFileSensor(si, dtuConn);// 请求文件传感器
                        foreach (SensorAcqResult r in result)
                        {
                            rslt.AddSensorResult(r);
                        }
                    }
                    CheckFileAndBackup(dtuConn.FilePath);
                }
                catch (System.Exception e)
                {
                    rslt.ErrorCode = (int)Errors.ERR_NOT_CONNECTED;
                    rslt.ErrorMsg  = string.Format(
                        "DTU:{0},FilePath:{1},Failed To Read the File,Msg:{2}",
                        dtu.DtuCode,
                        dtuConn.FilePath,
                        e.Message);
                    log.ErrorFormat(
                        "dtu:{0} network={1},file={2},Failed To Read the File,Msg:{3}",
                        dtu.DtuCode,
                        dtu.NetworkType,
                        dtuConn.FilePath,
                        e.Message);
                }
            }
            else
            {
                rslt.ErrorCode = (int)Errors.ERR_NOT_CONNECTED;
                rslt.ErrorMsg  = string.Format(
                    "DTU:{0},FilePath:{1},File Not Exists",
                    dtu.DtuCode,
                    dtuConn != null ? dtuConn.FilePath : null);
                log.ErrorFormat("dtu:{0} network={1},file={2},File Not Exists", dtu.DtuCode, dtu.NetworkType, dtuConn != null ? dtuConn.FilePath : null);
            }
            sw.Stop();
            rslt.Finished    = System.DateTime.Now;
            rslt.Elapsed     = sw.ElapsedMilliseconds;
            rslt.Task.Status = DACTaskStatus.DONE;
            context.DtuConnection.Disconnect();

            return(rslt);
        }