internal QuicExecutionData(Timestamp timeStamp, uint threadId, ushort procesor, TimestampDelta duration, QuicExecutionType type) { TimeStamp = timeStamp; ThreadId = threadId; Processor = procesor; Duration = duration; Type = type; }
public IReadOnlyList <QuicExecutionData> GetExecutionEvents() { var execEvents = new List <QuicExecutionData>(); QuicEvent?lastEvent = null; foreach (var evt in Events) { if (lastEvent != null && (evt.ID == QuicEventId.ConnScheduleState || evt.ID == QuicEventId.ConnExecOper || evt.ID == QuicEventId.ConnExecApiOper || evt.ID == QuicEventId.ConnExecTimerOper)) { QuicExecutionType type = QuicExecutionType.Unknown; switch (lastEvent.ID) { case QuicEventId.ConnExecOper: { var payload = lastEvent.Payload as QuicConnectionExecOperPayload; type = (QuicExecutionType)((uint)QuicExecutionType.OperApi + payload !.Type); break; } case QuicEventId.ConnExecApiOper: { var payload = lastEvent.Payload as QuicConnectionExecApiOperPayload; type = (QuicExecutionType)((uint)QuicExecutionType.ApiConnClose + payload !.Type); break; } case QuicEventId.ConnExecTimerOper: { var payload = lastEvent.Payload as QuicConnectionExecTimerOperPayload; type = (QuicExecutionType)((uint)QuicExecutionType.TimerPacing + payload !.Type); break; } } execEvents.Add( new QuicExecutionData( lastEvent.TimeStamp, lastEvent.ThreadId, lastEvent.Processor, evt.TimeStamp - lastEvent.TimeStamp, type)); } if (evt.ID == QuicEventId.ConnScheduleState) { lastEvent = null; } else if (evt.ID == QuicEventId.ConnExecOper || evt.ID == QuicEventId.ConnExecApiOper || evt.ID == QuicEventId.ConnExecTimerOper) { lastEvent = evt; } } return(execEvents); }
public IReadOnlyList <QuicExecutionData> GetExecutionEvents() { var execEvents = new List <QuicExecutionData>(); QuicEvent?lastEvent = null; foreach (var evt in Events) { if (lastEvent != null && (evt.EventId == QuicEventId.ConnScheduleState || evt.EventId == QuicEventId.ConnExecOper || evt.EventId == QuicEventId.ConnExecApiOper || evt.EventId == QuicEventId.ConnExecTimerOper)) { QuicExecutionType type = QuicExecutionType.Unknown; switch (lastEvent.EventId) { case QuicEventId.ConnExecOper: type = (lastEvent as QuicConnectionExecOperEvent) !.ExecutionType; break; case QuicEventId.ConnExecApiOper: type = (lastEvent as QuicConnectionExecApiOperEvent) !.ExecutionType; break; case QuicEventId.ConnExecTimerOper: type = (lastEvent as QuicConnectionExecTimerOperEvent) !.ExecutionType; break; } execEvents.Add( new QuicExecutionData( lastEvent.TimeStamp, lastEvent.ThreadId, lastEvent.Processor, evt.TimeStamp - lastEvent.TimeStamp, type)); } if (evt.EventId == QuicEventId.ConnScheduleState) { lastEvent = null; } else if (evt.EventId == QuicEventId.ConnExecOper || evt.EventId == QuicEventId.ConnExecApiOper || evt.EventId == QuicEventId.ConnExecTimerOper) { lastEvent = evt; } } return(execEvents); }