public override bool IsDataExists(ProcessedDataPackage state) { RenderDumpFilesInfo rdfi = new RenderDumpFilesInfo(state); if (String.IsNullOrEmpty(rdfi.GetFullPath())) { return(false); } FileInfo fi = new FileInfo(rdfi.GetFullPath()); return(fi.Exists && fi.Length > 0); }
private void SaveDump(string cmdId, string args) { if (this.StartInfo == null || args == null) { return; } Stream outs = new RenderDumpFilesInfo(this.StartInfo).Open(FileAccess.Write); if (outs != null) { StreamWriter sw = new StreamWriter(outs, Encoding.UTF8); sw.Write(args); sw.Flush(); sw.Close(); } }
public override RenderData GetProcessedData(ProcessedDataPackage state) { RenderDumpFilesInfo rdfi = new RenderDumpFilesInfo(state); StreamReader source = new StreamReader(rdfi.Open(FileAccess.Read)); RenderData renderData = new RenderData(); if (source == null) { return(renderData); } renderData.RenderDumpFilename = rdfi.GetFilename(); String buffer = source.ReadToEnd(); source.Close(); source.Dispose(); MatchCollection matchs = render_Dump_Pattern.Matches(buffer); Match match = null; bool isStart = false; int id = 0; long timestamp = 0; String type = ""; RenderedSegment renderedPeice = null; for (int i = 0; i < matchs.Count; i++) { match = matchs[i]; if (match.Success) { isStart = (match.Groups[1].Value == "S"); id = int.Parse(match.Groups[2].Value); timestamp = long.Parse(match.Groups[5].Value); type = match.Groups[4].Value; if (type == "UN") { renderData.ReadyStateUninitialized = timestamp; } else if (type == "LI") { renderData.ReadyStateLoading = timestamp; } else if (type == "LO") { renderData.ReadyStateLoaded = timestamp; } else if (type == "IN") { renderData.ReadyStateInteractive = timestamp; } else if (type == "CO") { renderData.ReadyStateComplete = timestamp; } else if (type == "OL") { renderData.OnLoad = timestamp; } else { if (renderData.ContainsKey(id) == false) { renderedPeice = new RenderedSegment(id); renderData.Add(id, renderedPeice); } else { renderedPeice = renderData[id]; } if (isStart) { renderedPeice.StartTime = timestamp; } else { renderedPeice.EndTime = timestamp; } renderedPeice.SegmentType = GetSegmentType(type); } if (timestamp > 0) { state.CollectionStartTime = Math.Min(state.CollectionStartTime, timestamp); } state.CollectionEndTime = Math.Max(state.CollectionEndTime, timestamp); } } renderData.TotalRenderTime = state.CollectionEndTime - state.CollectionStartTime; FixAvgMaxMin(renderData); return(renderData); }