File: Internal\Http3\IHttp3Stream.cs
Web Access
Project: src\src\Servers\Kestrel\Core\src\Microsoft.AspNetCore.Server.Kestrel.Core.csproj (Microsoft.AspNetCore.Server.Kestrel.Core)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Net.Http;
using Microsoft.AspNetCore.Connections;
 
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http3;
 
internal interface IHttp3Stream
{
    /// <summary>
    /// The stream ID is set by QUIC.
    /// </summary>
    long StreamId { get; }
 
    /// <summary>
    /// Used to track the timeout in two situations:
    /// 1. Between when the stream was started by the client, and getting a header.
    ///    Value is driven by <see cref="KestrelServerLimits.RequestHeadersTimeout"/>.
    /// 2. Between when the request delegate is complete and the transport draining.
    ///    Value is driven by <see cref="KestrelServerLimits.MinResponseDataRate"/>.
    /// </summary>
    long StreamTimeoutTimestamp { get; set; }
 
    /// <summary>
    /// The stream is receiving the header frame.
    /// - Request streams = HEADERS frame.
    /// - Control streams = unidirectional stream header.
    /// </summary>
    bool IsReceivingHeader { get; }
 
    /// <summary>
    /// The stream request delegate is complete and the transport is draining.
    /// </summary>
    bool IsDraining { get; }
 
    bool IsRequestStream { get; }
 
    bool EndStreamReceived { get; }
    bool IsAborted { get; }
    bool IsCompleted { get; }
 
    string TraceIdentifier { get; }
 
    void Abort(ConnectionAbortedException abortReason, Http3ErrorCode errorCode);
}