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 EventDescriptionBoard Read(BinaryReader reader) { EventDescriptionBoard desc = new EventDescriptionBoard(); 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); for (int i = 0; i < threadCount; ++i) { desc.Threads.Add(ThreadDescription.Read(reader)); } desc.MainThreadIndex = reader.ReadInt32(); int count = reader.ReadInt32(); for (int i = 0; i < count; ++i) { desc.board.Add(EventDescription.Read(reader, i)); } return(desc); }