public List <Dictionary <string, Dictionary <string, string> > > getHistory(String imei, String startDate, String endDate)
        {
            List <Dictionary <string, Dictionary <string, string> > > file_data = new List <Dictionary <string, Dictionary <string, string> > >();

            String[] imeiArray = LimitData.ProcessDirectory(Config.PathFile);
            for (int i = 0; i < imeiArray.Length; i++)
            {
                bool bo = imeiArray[i].Split('.')[0].Equals(imei);
                if (bo)
                {
                    System.Diagnostics.Debug.WriteLine("Huyenchu imeiArray: " + imeiArray[i].ToString()
                                                       + " " + bo.ToString() + " " + imeiArray[i].Split('.')[0]);
                    //List<Dictionary<string, Dictionary<string, string>>> file_data = new List<Dictionary<string, Dictionary<string, string>>>();
                    var    filestream = new System.IO.FileStream(Config.PathFile + imeiArray[i], System.IO.FileMode.Open);
                    var    file       = new System.IO.StreamReader(filestream);
                    string line_of_text;
                    do
                    // handle error
                    {
                        Dictionary <string, Dictionary <string, string> > record = new Dictionary <string, Dictionary <string, string> >();
                        line_of_text = file.ReadLine();
                        if (line_of_text == null || line_of_text.Trim('\n', '\r').Length == 0)
                        {
                            break;
                        }
                        record["timestamp_recv"] = LimitData.extract_data_begin(line_of_text);
                        line_of_text             = file.ReadLine();
                        if (line_of_text == null || line_of_text.Trim('\n', '\r').Length == 0)
                        {
                            break;
                        }
                        record["data"] = LimitData.extract_data(line_of_text);

                        DateTime curDate = LimitData.stringToDate(line_of_text.Split(',')[1]);

                        if (LimitData.DateToTimestamp(curDate, LimitData.stringToDate(startDate)) >= 0 &&
                            LimitData.DateToTimestamp(LimitData.stringToDate(endDate), curDate) >= 0)
                        {
                            file_data.Add(record);
                        }
                    } while (true);
                    filestream.Close();
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Huyenchu imeiArray: " + imeiArray[i].ToString()
                                                       + " " + bo.ToString() + " " + imeiArray[i].Split('.')[0]);
                }
            }
            return(file_data);
        }
示例#2
0
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        List <Ilife> target = Target.GetTarget((EFuncTarget)(Limit.Target));

        if (target.Count <= 0)
        {
            return(false);
        }

        Vector3 targetPos = ((ITransformBehaviour)(target[0])).GetTransformData().GetPosition();
        float   distance  = Vector3.Distance(PlayerManager.Instance.GetPlayerInstance().GetTransformData().GetPosition(), targetPos);

        return(OperationFunc.LimitOperatorValue((ELimitOperator)Limit.Oper, (int)(distance), Limit.ParamIntList[0]));
    }
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        List <Ilife> target = Target.GetTarget((EFuncTarget)(Limit.Target));

        if (Limit.Oper == (int)ELimitOperator.ELO_Equal)
        {
            return(target[0] is PlayerCharacter);
        }
        else if (Limit.Oper == (int)ELimitOperator.ELO_NotEuqal)
        {
            return(!(target[0] is PlayerCharacter));
        }
        return(false);
    }
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        List <Ilife> target = Target.GetTarget(EFuncTarget.EFT_User);

        if (target == null || target.Count <= 0)
        {
            return(false);
        }

        if (!(target[0] is Npc))
        {
            return(false);
        }

        Npc npc = (Npc)target[0];

        return(npc.IsPlayerControlled);
    }
示例#5
0
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        List <Ilife> target = Target.GetTarget((EFuncTarget)(Limit.Target));

        for (int i = 0; i < target.Count; ++i)
        {
            if (!(target[i] is PlayerCharacter))
            {
                continue;
            }
            int  index = Limit.ParamIntList[0];
            bool flag  = PlayerManager.Instance.GetCharCounterData().GetFlag(index);
            if (!OperationFunc.LimitOperatorValue((ELimitOperator)Limit.Oper, flag, (Limit.ParamIntList[1] != 0)))
            {
                return(false);
            }
        }
        return(true);
    }
示例#6
0
        /// <summary>
        /// Reads element "joint" with required attributes "name" and "type".
        /// </summary>
        /// <param name="element">Optional element "joint".</param>
        /// <param name="optional">Unused.</param>
        public override void Read(XElement element, bool optional = true)
        {
            if (element == null)
            {
                return;
            }

            base.Read(element, false);
            var type = Utils.ReadString(element, "type", false);

            Type = type == "revolute" ?
                   JointType.Revolute :
                   type == "continuous" ?
                   JointType.Continuous :
                   type == "prismatic" ?
                   JointType.Prismatic :
                   type == "fixed" ?
                   JointType.Fixed:
                   type == "planar" ?
                   JointType.Planar :
                   JointType.Unknown;
            if (Type == JointType.Unknown)
            {
                throw new UrdfIOException($"{Utils.GetLineInfo( element )}: Unknown joint type '{type}'.");
            }

            Parent = Utils.ReadString(element.Element("parent"), "link", false);
            Child  = Utils.ReadString(element.Element("child"), "link", false);

            if (element.Element("axis") != null)
            {
                Axis = Utils.ReadVector3(element.Element("axis"), "xyz", false);
            }

            Calibration      = CalibrationData.ReadOptional(element);
            Dynamics         = DynamicsData.ReadOptional(element);
            Limit            = LimitData.Read(element, type != "revolute" && type != "prismatic");
            Mimic            = MimicData.ReadOptional(element);
            SafetyController = SafetyControllerData.ReadOptional(element);
        }
示例#7
0
    public List <String> parse_file()
    {
        List <String> listJson = new List <string>();

        string[] listFile = ProcessDirectory(Config.PathFile);
        for (int i = 0; i < listFile.Length; i++)
        {
            List <Dictionary <string, Dictionary <string, string> > > file_data = new List <Dictionary <string, Dictionary <string, string> > >();
            var    filestream = new System.IO.FileStream(Config.PathFile + listFile[i], System.IO.FileMode.Open);
            var    file       = new System.IO.StreamReader(filestream);
            string line_of_text;
            do
            // chua handle error
            {
                Dictionary <string, Dictionary <string, string> > record = new Dictionary <string, Dictionary <string, string> >();
                line_of_text = file.ReadLine();
                if (line_of_text == null || line_of_text.Trim('\n', '\r').Length == 0)
                {
                    break;
                }
                record["timestamp_recv"] = LimitData.extract_data_begin(line_of_text);
                line_of_text             = file.ReadLine();
                if (line_of_text == null || line_of_text.Trim('\n', '\r').Length == 0)
                {
                    break;
                }
                record["data"] = LimitData.extract_data(line_of_text);
                file_data.Clear();
                file_data.Add(record);
            } while (true);
            filestream.Close();

            listJson.Add(JsonConvert.SerializeObject(file_data));

            //listJson.Add((new JavaScriptSerializer()).Serialize(file_data));
            //return (new JavaScriptSerializer()).Serialize(file_data);
        }

        return(listJson);
    }
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        int missionStepCount = MissionManager.Instance.GetMissionStepCounter(Limit.ParamIntList[0]);

        return(OperationFunc.LimitOperatorValue((ELimitOperator)Limit.Oper, missionStepCount, Limit.ParamIntList[1]));
    }
 public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
 {
     return(MissionManager.Instance.CheckMissionAvailable(Limit.ParamIntList[0]));
 }
 public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
 {
     return(ActionManager.Instance.CheckActionIsPlayed(Limit.ParamIntList[0]));
 }
示例#11
0
        public int SaveData(AccountDbContext context)
        {
            CheckForNewCurrentDataRow(context);

            List <LimitDataArchiveItem> localDataArchive;

            lock (DataArchiveLockObject)
            {
                var dataArchive = GetDataArchive(context);
                localDataArchive = new List <LimitDataArchiveItem>(dataArchive);
            }

            // Сохраним все несохранённые записи
            var repository = context.GetLimitDataRepository();
            var rows       = localDataArchive.Where(t => t.Id == Guid.Empty).ToArray();

            foreach (var row in rows)
            {
                var limitData = new LimitData()
                {
                    BeginDate         = row.BeginDate,
                    EndDate           = row.EndDate,
                    Type              = LimitDataType.Per5Minutes,
                    EventsRequests    = row.EventsRequests,
                    EventsSize        = row.EventsSize,
                    LogSize           = row.LogSize,
                    MetricsRequests   = row.MetricsRequests,
                    MetricsSize       = row.MetricsSize,
                    UnitTestsRequests = row.UnitTestsRequests,
                    UnitTestsSize     = row.UnitTestsSize
                };
                limitData.UnitTestData = row.UnitTestData.Select(t => new LimitDataForUnitTest()
                {
                    Id           = Guid.NewGuid(),
                    LimitData    = limitData,
                    UnitTestId   = t.Key,
                    ResultsCount = t.Value.ResultsCount
                }).ToList();
                repository.Add(limitData);

                context.SaveChanges();

                row.Id           = limitData.Id;
                row.UnitTestData = null;
            }

            // Проверим, есть ли запись за вчера с данными за целый день
            var yesterday         = Now.Date.AddDays(-1);
            var totalForYesterday = repository.QueryAll().FirstOrDefault(t => t.Type == LimitDataType.Per1Day && t.BeginDate == yesterday);

            if (totalForYesterday == null)
            {
                // Если записи за вчера нет, создадим её
                totalForYesterday = new LimitData()
                {
                    BeginDate = yesterday,
                    EndDate   = yesterday.AddDays(1),
                    Type      = LimitDataType.Per1Day
                };

                // Заполним данными из архива за вчера
                var yesterdayArchive = localDataArchive.Where(t => t.BeginDate >= yesterday && t.BeginDate < yesterday.AddDays(1)).ToList();

                totalForYesterday.EventsRequests    = yesterdayArchive.Sum(t => t.EventsRequests);
                totalForYesterday.EventsSize        = yesterdayArchive.Sum(t => t.EventsSize);
                totalForYesterday.UnitTestsRequests = yesterdayArchive.Sum(t => t.UnitTestsRequests);
                totalForYesterday.UnitTestsSize     = yesterdayArchive.Sum(t => t.UnitTestsSize);
                totalForYesterday.MetricsRequests   = yesterdayArchive.Sum(t => t.MetricsRequests);
                totalForYesterday.MetricsSize       = yesterdayArchive.Sum(t => t.MetricsSize);
                totalForYesterday.LogSize           = yesterdayArchive.Sum(t => t.LogSize);

                repository.Add(totalForYesterday);
                context.SaveChanges();
            }

            // Удалим из архива в памяти те, которые старше 48 часов (сегодня + вчера)
            lock (DataArchiveLockObject)
            {
                var dataArchive = GetDataArchive(context);
                dataArchive.RemoveAll(t => t.BeginDate < Now.AddHours(-48));
            }

            // Удалим из базы те, которые старше старше 48 часов (сегодня + вчера)
            repository.RemoveOld(Now.AddHours(-48), LimitDataType.Per5Minutes);

            return(rows.Length);
        }
示例#12
0
 public abstract bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context);
示例#13
0
    public override bool LimitExecHandler(HandleTarget Target, LimitData Limit, FuncContext context)
    {
        int random = Random.Range(0, 100);

        return(OperationFunc.LimitOperatorValue((ELimitOperator)Limit.Oper, random, Limit.ParamIntList[0]));
    }