public static EventDescriptionBoard Read(DataResponse response) { BinaryReader reader = response.Reader; EventDescriptionBoard desc = new EventDescriptionBoard() { Response = response }; desc.BaseStream = reader.BaseStream; desc.ID = reader.ReadInt32(); desc.Frequency = reader.ReadInt64(); Durable.InitFrequency(desc.Frequency); desc.TimeSlice = new Durable(); desc.TimeSlice.ReadDurable(reader); int threadCount = reader.ReadInt32(); desc.Threads = new List <ThreadDescription>(threadCount); desc.ThreadID2ThreadIndex = new Dictionary <UInt64, int>(); for (int i = 0; i < threadCount; ++i) { ThreadDescription threadDesc = ThreadDescription.Read(response); desc.Threads.Add(threadDesc); if (!desc.ThreadID2ThreadIndex.ContainsKey(threadDesc.ThreadID)) { desc.ThreadID2ThreadIndex.Add(threadDesc.ThreadID, i); } else { // The old thread was finished and the new thread was started // with the same threadID during one profiling session. // Can't do much here - lets show information for the new thread only. desc.ThreadID2ThreadIndex[threadDesc.ThreadID] = i; } } int fibersCount = reader.ReadInt32(); desc.Fibers = new List <FiberDescription>(fibersCount); for (int i = 0; i < fibersCount; ++i) { FiberDescription fiberDesc = FiberDescription.Read(response); desc.Fibers.Add(fiberDesc); } desc.MainThreadIndex = reader.ReadInt32(); int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { desc.board.Add(EventDescription.Read(reader, i)); } return(desc); }
public static FiberDescription Read(DataResponse response) { BinaryReader reader = response.Reader; FiberDescription res = new FiberDescription(); res.fiberID = reader.ReadUInt64(); return(res); }
public static EventDescriptionBoard Read(DataResponse response) { BinaryReader reader = response.Reader; EventDescriptionBoard desc = new EventDescriptionBoard(); desc.Response = response; desc.BaseStream = reader.BaseStream; desc.ID = reader.ReadInt32(); desc.TimeSettings = new TimeSettings(); desc.TimeSettings.TicksToMs = 1000.0 / (double)reader.ReadInt64(); desc.TimeSettings.Origin = reader.ReadInt64(); desc.TimeSettings.PrecisionCut = reader.ReadInt32(); Durable.InitSettings(desc.TimeSettings); desc.TimeSlice = new Durable(); desc.TimeSlice.ReadDurable(reader); int threadCount = reader.ReadInt32(); desc.Threads = new List <ThreadDescription>(threadCount); desc.ThreadID2ThreadIndex = new Dictionary <UInt64, int>(); for (int i = 0; i < threadCount; ++i) { ThreadDescription threadDesc = ThreadDescription.Read(response); desc.Threads.Add(threadDesc); if (!desc.ThreadID2ThreadIndex.ContainsKey(threadDesc.ThreadID)) { desc.ThreadID2ThreadIndex.Add(threadDesc.ThreadID, i); } else { // The old thread was finished and the new thread was started // with the same threadID during one profiling session. // Can't do much here - lets show information for the new thread only. desc.ThreadID2ThreadIndex[threadDesc.ThreadID] = i; } } if (response.ApplicationID == NetworkProtocol.BROFILER_APP_ID) { int fibersCount = reader.ReadInt32(); desc.Fibers = new List <FiberDescription>(fibersCount); for (int i = 0; i < fibersCount; ++i) { FiberDescription fiberDesc = FiberDescription.Read(response); desc.Fibers.Add(fiberDesc); } } desc.MainThreadIndex = reader.ReadInt32(); int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { desc.board.Add(EventDescription.Read(reader, i)); } // TODO: Tags // TODO: Run Info // TODO: Run Info // TODO: Filters // TODO: Mode // TODO: Thread Descriptions return(desc); }
public static EventDescriptionBoard Read(DataResponse response) { BinaryReader reader = response.Reader; EventDescriptionBoard desc = new EventDescriptionBoard(); desc.Response = response; desc.BaseStream = reader.BaseStream; desc.ID = reader.ReadInt32(); desc.TimeSettings = new TimeSettings(); desc.TimeSettings.TicksToMs = 1000.0 / (double)reader.ReadInt64(); desc.TimeSettings.Origin = reader.ReadInt64(); desc.TimeSettings.PrecisionCut = reader.ReadInt32(); Durable.InitSettings(desc.TimeSettings); desc.TimeSlice = new Durable(); desc.TimeSlice.ReadDurable(reader); int threadCount = reader.ReadInt32(); desc.Threads = new List <ThreadDescription>(threadCount); desc.ThreadID2ThreadIndex = new Dictionary <UInt64, int>(); for (int i = 0; i < threadCount; ++i) { ThreadDescription threadDesc = ThreadDescription.Read(response); threadDesc.Origin = ThreadDescription.Source.Game; threadDesc.ThreadIndex = i; desc.Threads.Add(threadDesc); if (!desc.ThreadID2ThreadIndex.ContainsKey(threadDesc.ThreadID)) { desc.ThreadID2ThreadIndex.Add(threadDesc.ThreadID, i); desc.ThreadDescriptions.Add(threadDesc.ThreadID, threadDesc); } else { // The old thread was finished and the new thread was started // with the same threadID during one profiling session. // Can't do much here - lets show information for the new thread only. desc.ThreadID2ThreadIndex[threadDesc.ThreadID] = i; } } if (response.ApplicationID == NetworkProtocol.OPTICK_APP_ID) { int fibersCount = reader.ReadInt32(); desc.Fibers = new List <FiberDescription>(fibersCount); for (int i = 0; i < fibersCount; ++i) { FiberDescription fiberDesc = FiberDescription.Read(response); desc.Fibers.Add(fiberDesc); } } desc.MainThreadIndex = reader.ReadInt32(); int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { desc.board.Add(EventDescription.Read(reader, i)); } // TODO: Tags reader.ReadUInt32(); // TODO: Run Info reader.ReadUInt32(); // TODO: Run Info reader.ReadUInt32(); // TODO: Filters reader.ReadUInt32(); // TODO: Mode desc.Mode = reader.ReadUInt32(); // TODO: Thread Descriptions int processDescCount = reader.ReadInt32(); for (int i = 0; i < processDescCount; ++i) { ProcessDescription process = ProcessDescription.Read(response); if (!desc.ProcessDescritpions.ContainsKey(process.ProcessID)) { desc.ProcessDescritpions.Add(process.ProcessID, process); } } int threadDescCount = reader.ReadInt32(); for (int i = 0; i < threadDescCount; ++i) { ThreadDescription thread = ThreadDescription.Read(response); thread.Origin = ThreadDescription.Source.GameAuto; if (!desc.ThreadDescriptions.ContainsKey(thread.ThreadID)) { desc.ThreadDescriptions.Add(thread.ThreadID, thread); } //else if (!String.IsNullOrEmpty(thread.Name)) // desc.ThreadDescriptions[thread.ThreadID] = thread; ProcessDescription process = null; if (desc.ProcessDescritpions.TryGetValue(thread.ProcessID, out process)) { thread.Process = process; } } desc.ProcessID = response.Reader.ReadInt32(); desc.CPUCoreCount = response.Reader.ReadInt32(); return(desc); }