Esempio n. 1
0
        /// <summary>
        /// Rekonstruiert diesen Eintrag aus der XML Form.
        /// </summary>
        /// <param name="node">Die XML Form.</param>
        /// <returns>Der rekonstruierte Eintrag.</returns>
        public static FileItem LoadFromXml(XmlElement node)
        {
            // Process
            var self = AnalyserMain.LoadFromXml <FileItem>(node);

            // All children
            foreach (XmlElement child in node.SelectNodes(typeof(StreamItem).Name))
            {
                self.Streams.Add(StreamItem.LoadFromXml(child));
            }

            // Report
            return(self);
        }
Esempio n. 2
0
 /// <summary>
 /// Erzeugt einen neuen Vermittler.
 /// </summary>
 /// <param name="analyser">Die eigentliche Analyseeinheit.</param>
 /// <param name="item">Die zugehörige Beschreibung.</param>
 public _Builder(TSParser analyser, StreamItem item)
     : base(analyser, null)
 {
     // Remember
     m_Item = item;
 }
Esempio n. 3
0
        /// <summary>
        /// Analysiert die aktuelle Datei.
        /// </summary>
        public void Analyse()
        {
            // Reset
            Streams.Clear();

            // Be safe
            try
            {
                // First run to get the stream analysis
                using (var parser = new TSParser {
                    FillStatistics = true
                })
                {
                    // Fill it
                    ReadFile(parser);

                    // Load statistics
                    foreach (var info in parser.PacketStatistics.OrderBy(p => p.Key))
                    {
                        Streams.Add(new StreamItem(info.Key, info.Value));
                    }

                    // Add statistics
                    SubItems[2].Text = parser.BytesReceived.ToString("N0");
                    SubItems[3].Text = parser.BytesSkipped.ToString("N0");
                    SubItems[4].Text = parser.Callbacks.ToString();
                    SubItems[5].Text = parser.Resynchronized.ToString();
                    SubItems[6].Text = parser.Scrambled.ToString("N0");
                    SubItems[7].Text = parser.TransmissionErrors.ToString();
                    SubItems[8].Text = parser.ValidPATCount.ToString();
                    SubItems[9].Text = parser.PacketsReceived.ToString("N0");

                    // Check mode
                    if (parser.ValidPATCount > 0)
                    {
                        SubItems[10].Text = Math.Round(parser.BytesReceived * 1.0 / parser.ValidPATCount).ToString("N0");
                    }
                }

                // First run to do detail analysis
                using (var parser = new TSParser())
                {
                    // Connect
                    foreach (var stream in Streams)
                    {
                        stream.RegisterPhase1(parser);
                    }

                    // Fill it
                    ReadFile(parser);
                }

                // Second run to do get SI Tables
                using (var parser = new TSParser())
                {
                    // Connect
                    foreach (var stream in Streams)
                    {
                        stream.RegisterPhase2(parser);
                    }

                    // Fill it
                    ReadFile(parser);
                }

                // See if PAT is available
                StreamItem pat = Streams.FirstOrDefault(s => s.PID == 0);
                if (pat != null)
                {
                    SubItems[11].Text = string.Join(", ", pat.TransportIdentifiers.Select(t => t.ToString()).ToArray());
                }
            }
            catch (Exception e)
            {
                // Remember
                SubItems[12].Text = e.Message;
            }

            // Finish
            foreach (var stream in Streams)
            {
                stream.RefreshUI();
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Erzeugt einen neuen Vermittler.
 /// </summary>
 /// <param name="analyser">Die eigentliche Analyseeinheit.</param>
 /// <param name="item">Die zugehörige Beschreibung.</param>
 public _Builder( TSParser analyser, StreamItem item )
     : base( analyser, null )
 {
     // Remember
     m_Item = item;
 }