Exemplo n.º 1
0
        public LogGroup(LogFileReader reader, string name)
        {
            Name       = name;
            FileReader = reader;

            var xmlData   = reader.ReadArchiveFile(name + "/Structure.xml");
            var xmlString = Encoding.ASCII.GetString(xmlData);

            using (var xmlReader = XmlTextReader.Create(new StringReader(xmlString)))
            {
                while (xmlReader.Read())
                {
                    if (xmlReader.NodeType == XmlNodeType.Element)
                    {
                        switch (xmlReader.Name)
                        {
                        case "entity":
                            if (xmlReader.GetAttribute("name") != this.Name)
                            {
                                Debug.WriteLine("Something is not right");
                            }
                            break;

                        case "field":
                            var fieldObj = new LogField(this, xmlReader.GetAttribute("name"),
                                                        xmlReader.GetAttribute("id"),
                                                        xmlReader.GetAttribute("type"));
                            _fields.Add(fieldObj);
                            break;
                        }
                    }
                }
            }

            var timeline = FileReader.ReadArchiveFile(Name + "/Time.bin");
            int index    = 0;

            while (index < timeline.Length)
            {
                int time   = BitConverter.ToInt32(timeline, index);
                int offset = BitConverter.ToInt32(timeline, index + 4);
                _timeline.Add(time, offset);
                index += 8;
            }
        }
Exemplo n.º 2
0
        public LogSampleProvider(LogFileReader reader, IEnumerable <string> groups, int startTime, int endTime)
        {
            Reader    = reader;
            _groups   = groups.ToList();
            StartTime = startTime;
            EndTime   = endTime;

            // Make base sample.
            TimeLine = reader.Groups.SelectMany(x => x.Timeline.Keys).Distinct().OrderBy(x => x).ToList();

            // If this time doesn't exist; search the closest related.
            if (!TimeLine.Contains(startTime))
            {
                startTime = TimeLine.Select(x => x - startTime).OrderBy(x => x).Take(1).FirstOrDefault() + startTime;
            }

            Sample = new LogSample(this, startTime, groups.Select(reader.GetGroup));



            InitializeSample(Sample, startTime);
        }