示例#1
0
 internal QuicExecutionData(Timestamp timeStamp, uint threadId, ushort procesor, TimestampDelta duration, QuicExecutionType type)
 {
     TimeStamp = timeStamp;
     ThreadId  = threadId;
     Processor = procesor;
     Duration  = duration;
     Type      = type;
 }
示例#2
0
        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);
        }
示例#3
0
        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);
        }