/// <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); }
/// <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; }
/// <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(); } }
/// <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; }