File: HttpSysRequestTimingType.cs
Web Access
Project: src\src\Servers\HttpSys\src\Microsoft.AspNetCore.Server.HttpSys.csproj (Microsoft.AspNetCore.Server.HttpSys)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
namespace Microsoft.AspNetCore.Server.HttpSys;
 
/// <summary>
/// Defines the types of request processing timestamps exposed via the Http.Sys HTTP_REQUEST_TIMING_INFO extensibility point.
/// </summary>
/// <remarks>
/// Use <see cref="IHttpSysRequestTimingFeature"/> to access these timestamps.
/// </remarks>
public enum HttpSysRequestTimingType
{
    // IMPORTANT: Order matters and should match the order defined in HTTP_REQUEST_TIMING_TYPE
 
    /// <summary>
    /// Time the connection started.
    /// </summary>
    ConnectionStart,
 
    /// <summary>
    /// Time the first HTTP byte is received.
    /// </summary>
    DataStart,
 
    /// <summary>
    /// Time TLS certificate loading starts.
    /// </summary>
    TlsCertificateLoadStart,
 
    /// <summary>
    /// Time TLS certificate loading ends.
    /// </summary>
    TlsCertificateLoadEnd,
 
    /// <summary>
    /// Time TLS leg one handshake starts.
    /// </summary>
    TlsHandshakeLeg1Start,
 
    /// <summary>
    /// Time TLS leg one handshake ends.
    /// </summary>
    TlsHandshakeLeg1End,
 
    /// <summary>
    /// Time TLS leg two handshake starts.
    /// </summary>
    TlsHandshakeLeg2Start,
 
    /// <summary>
    /// Time TLS leg two handshake ends.
    /// </summary>
    TlsHandshakeLeg2End,
 
    /// <summary>
    /// Time TLS attribute query starts.
    /// </summary>
    TlsAttributesQueryStart,
 
    /// <summary>
    /// Time TLS attribute query ends.
    /// </summary>
    TlsAttributesQueryEnd,
 
    /// <summary>
    /// Time TLS client cert query starts.
    /// </summary>
    TlsClientCertQueryStart,
 
    /// <summary>
    /// Time TLS client cert query ends.
    /// </summary>
    TlsClientCertQueryEnd,
 
    /// <summary>
    /// Time HTTP2 streaming starts.
    /// </summary>
    Http2StreamStart,
 
    /// <summary>
    /// Time HTTP2 header decoding starts.
    /// </summary>
    Http2HeaderDecodeStart,
 
    /// <summary>
    /// Time HTTP2 header decoding ends.
    /// </summary>
    Http2HeaderDecodeEnd,
 
    /// <summary>
    /// Time HTTP header parsing starts.
    /// </summary>
    /// <remarks>
    /// For most requests, this is a good timestamp to use as a per request starting timestamp.
    /// </remarks>
    RequestHeaderParseStart,
 
    /// <summary>
    /// Time HTTP header parsing ends.
    /// </summary>
    RequestHeaderParseEnd,
 
    /// <summary>
    /// Time Http.Sys starts to determine which request queue to route the request to.
    /// </summary>
    RequestRoutingStart,
 
    /// <summary>
    /// Time Http.Sys has determined which request queue to route the request to.
    /// </summary>
    RequestRoutingEnd,
 
    /// <summary>
    /// Time the request is queued for inspection.
    /// </summary>
    RequestQueuedForInspection,
 
    /// <summary>
    /// Time the request is delivered for inspection.
    /// </summary>
    RequestDeliveredForInspection,
 
    /// <summary>
    /// Time the request has finished being inspected.
    /// </summary>
    RequestReturnedAfterInspection,
 
    /// <summary>
    /// Time the request is queued for delegation.
    /// </summary>
    RequestQueuedForDelegation,
 
    /// <summary>
    /// Time the request is delivered for delegation.
    /// </summary>
    RequestDeliveredForDelegation,
 
    /// <summary>
    /// Time the request was delegated.
    /// </summary>
    RequestReturnedAfterDelegation,
 
    /// <summary>
    /// Time the request was queued to the final request queue for processing.
    /// </summary>
    RequestQueuedForIO,
 
    /// <summary>
    /// Time the request was delivered to the final request queue for processing.
    /// </summary>
    RequestDeliveredForIO,
 
    /// <summary>
    /// Time HTTP3 streaming starts.
    /// </summary>
    Http3StreamStart,
 
    /// <summary>
    /// Time HTTP3 header decoding starts.
    /// </summary>
    Http3HeaderDecodeStart,
 
    /// <summary>
    /// Time HTTP3 header decoding ends.
    /// </summary>
    Http3HeaderDecodeEnd,
}