Skip to content

Latest commit

 

History

History
1012 lines (569 loc) · 34.3 KB

api-diffs_Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.md

File metadata and controls

1012 lines (569 loc) · 34.3 KB

Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http

 namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http {
-    public enum ConnectionOptions {
 {
-        Close = 1,

-        KeepAlive = 2,

-        None = 0,

-        Upgrade = 4,

-    }
-    public class DateHeaderValueManager : IHeartbeatHandler {
 {
-        public DateHeaderValueManager();

-        public DateHeaderValueManager.DateHeaderValues GetDateHeaderValues();

-        public void OnHeartbeat(DateTimeOffset now);

-        public class DateHeaderValues {
 {
-            public byte[] Bytes;

-            public string String;

-            public DateHeaderValues();

-        }
-    }
-    public class Http1Connection : HttpProtocol, IHttpMinRequestBodyDataRateFeature, IHttpMinResponseDataRateFeature, IRequestProcessor {
 {
-        protected readonly long _keepAliveTicks;

-        public Http1Connection(HttpConnectionContext context);

-        public PipeReader Input { get; }

-        MinDataRate Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinRequestBodyDataRateFeature.MinDataRate { get; set; }

-        MinDataRate Microsoft.AspNetCore.Server.Kestrel.Core.Features.IHttpMinResponseDataRateFeature.MinDataRate { get; set; }

-        public MinDataRate MinRequestBodyDataRate { get; set; }

-        public MinDataRate MinResponseDataRate { get; set; }

-        public bool RequestTimedOut { get; }

-        public void Abort(ConnectionAbortedException abortReason);

-        protected override void ApplicationAbort();

-        protected override bool BeginRead(out ValueTask<ReadResult> awaitable);

-        protected override void BeginRequestProcessing();

-        protected override MessageBody CreateMessageBody();

-        protected override string CreateRequestId();

-        public void HandleReadDataRateTimeout();

-        public void HandleRequestHeadersTimeout();

-        void Microsoft.AspNetCore.Server.Kestrel.Core.Internal.IRequestProcessor.Tick(DateTimeOffset now);

-        public void OnInputOrOutputCompleted();

-        protected override void OnRequestProcessingEnded();

-        protected override void OnRequestProcessingEnding();

-        protected override void OnReset();

-        public void OnStartLine(HttpMethod method, HttpVersion version, Span<byte> target, Span<byte> path, Span<byte> query, Span<byte> customMethod, bool pathEncoded);

-        public void ParseRequest(ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);

-        public void SendTimeoutResponse();

-        public void StopProcessingNextRequest();

-        public bool TakeMessageHeaders(ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);

-        public bool TakeStartLine(ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);

-        protected override bool TryParseRequest(ReadResult result, out bool endConnection);

-    }
-    public abstract class Http1MessageBody : MessageBody {
 {
-        protected Http1MessageBody(Http1Connection context);

-        protected void Copy(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer);

-        public static MessageBody For(HttpVersion httpVersion, HttpRequestHeaders headers, Http1Connection context);

-        protected override Task OnConsumeAsync();

-        protected override void OnReadStarted();

-        protected override Task OnStopAsync();

-        protected virtual bool Read(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer, out SequencePosition consumed, out SequencePosition examined);

-    }
-    public class Http1OutputProducer : IDisposable, IHttpOutputAborter, IHttpOutputProducer {
 {
-        public Http1OutputProducer(PipeWriter pipeWriter, string connectionId, ConnectionContext connectionContext, IKestrelTrace log, ITimeoutControl timeoutControl, IHttpMinResponseDataRateFeature minResponseDataRateFeature);

-        public void Abort(ConnectionAbortedException error);

-        public void Dispose();

-        public Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken));

-        public Task Write100ContinueAsync();

-        public Task WriteAsync<T>(Func<PipeWriter, T, long> callback, T state, CancellationToken cancellationToken);

-        public Task WriteDataAsync(ReadOnlySpan<byte> buffer, CancellationToken cancellationToken = default(CancellationToken));

-        public void WriteResponseHeaders(int statusCode, string reasonPhrase, HttpResponseHeaders responseHeaders);

-        public Task WriteStreamSuffixAsync();

-    }
-    public struct Http1ParsingHandler : IHttpHeadersHandler, IHttpRequestLineHandler {
 {
-        public Http1Connection Connection;

-        public Http1ParsingHandler(Http1Connection connection);

-        public void OnHeader(Span<byte> name, Span<byte> value);

-        public void OnStartLine(HttpMethod method, HttpVersion version, Span<byte> target, Span<byte> path, Span<byte> query, Span<byte> customMethod, bool pathEncoded);

-    }
-    public abstract class HttpHeaders : ICollection<KeyValuePair<string, StringValues>>, IDictionary<string, StringValues>, IEnumerable, IEnumerable<KeyValuePair<string, StringValues>>, IHeaderDictionary {
 {
-        protected bool _isReadOnly;

-        protected Dictionary<string, StringValues> MaybeUnknown;

-        protected Nullable<long> _contentLength;

-        protected HttpHeaders();

-        public Nullable<long> ContentLength { get; set; }

-        public int Count { get; }

-        StringValues Microsoft.AspNetCore.Http.IHeaderDictionary.this[string key] { get; set; }

-        bool System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.IsReadOnly { get; }

-        StringValues System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.this[string key] { get; set; }

-        ICollection<string> System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.Keys { get; }

-        ICollection<StringValues> System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.Values { get; }

-        protected Dictionary<string, StringValues> Unknown { get; }

-        protected virtual bool AddValueFast(string key, in StringValues value);

-        protected static StringValues AppendValue(in StringValues existing, string append);

-        protected static int BitCount(long value);

-        protected virtual void ClearFast();

-        protected virtual bool CopyToFast(KeyValuePair<string, StringValues>[] array, int arrayIndex);

-        protected virtual int GetCountFast();

-        protected virtual IEnumerator<KeyValuePair<string, StringValues>> GetEnumeratorFast();

-        public static TransferCoding GetFinalTransferCoding(in StringValues transferEncoding);

-        public static ConnectionOptions ParseConnection(in StringValues connection);

-        protected virtual bool RemoveFast(string key);

-        public void Reset();

-        public void SetReadOnly();

-        protected virtual void SetValueFast(string key, in StringValues value);

-        void System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.Add(KeyValuePair<string, StringValues> item);

-        void System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.Clear();

-        bool System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.Contains(KeyValuePair<string, StringValues> item);

-        void System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.CopyTo(KeyValuePair<string, StringValues>[] array, int arrayIndex);

-        bool System.Collections.Generic.ICollection<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.Remove(KeyValuePair<string, StringValues> item);

-        void System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.Add(string key, StringValues value);

-        bool System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.ContainsKey(string key);

-        bool System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.Remove(string key);

-        bool System.Collections.Generic.IDictionary<System.String,Microsoft.Extensions.Primitives.StringValues>.TryGetValue(string key, out StringValues value);

-        IEnumerator<KeyValuePair<string, StringValues>> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.String,Microsoft.Extensions.Primitives.StringValues>>.GetEnumerator();

-        IEnumerator System.Collections.IEnumerable.GetEnumerator();

-        protected void ThrowArgumentException();

-        protected void ThrowDuplicateKeyException();

-        protected void ThrowHeadersReadOnlyException();

-        protected void ThrowKeyNotFoundException();

-        protected virtual bool TryGetValueFast(string key, out StringValues value);

-        public static void ValidateHeaderNameCharacters(string headerCharacters);

-        public static void ValidateHeaderValueCharacters(in StringValues headerValues);

-        public static void ValidateHeaderValueCharacters(string headerCharacters);

-    }
     public enum HttpMethod : byte {
         Connect = (byte)7,
         Custom = (byte)9,
         Delete = (byte)2,
         Get = (byte)0,
         Head = (byte)4,
         None = (byte)255,
         Options = (byte)8,
         Patch = (byte)6,
         Post = (byte)3,
         Put = (byte)1,
         Trace = (byte)5,
     }
     public class HttpParser<TRequestHandler> : IHttpParser<TRequestHandler> where TRequestHandler : IHttpHeadersHandler, IHttpRequestLineHandler {
         public HttpParser();
         public HttpParser(bool showErrorDetails);
-        bool Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpParser<TRequestHandler>.ParseHeaders(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes);

         bool Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.IHttpParser<TRequestHandler>.ParseRequestLine(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);
-        public bool ParseHeaders(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes);

+        public bool ParseHeaders(TRequestHandler handler, ref SequenceReader<byte> reader);
         public bool ParseRequestLine(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);
     }
-    public abstract class HttpProtocol : IEnumerable, IEnumerable<KeyValuePair<Type, object>>, IFeatureCollection, IHttpBodyControlFeature, IHttpConnectionFeature, IHttpMaxRequestBodySizeFeature, IHttpRequestFeature, IHttpRequestIdentifierFeature, IHttpRequestLifetimeFeature, IHttpResponseControl, IHttpResponseFeature, IHttpUpgradeFeature {
 {
-        protected HttpVersion _httpVersion;

-        protected RequestProcessingStatus _requestProcessingStatus;

-        protected Streams _streams;

-        protected volatile bool _keepAlive;

-        protected string _methodText;

-        public HttpProtocol(HttpConnectionContext context);

-        public bool AllowSynchronousIO { get; set; }

-        public IFeatureCollection ConnectionFeatures { get; }

-        protected string ConnectionId { get; }

-        public string ConnectionIdFeature { get; set; }

-        public bool HasResponseStarted { get; }

-        public bool HasStartedConsumingRequestBody { get; set; }

-        protected HttpRequestHeaders HttpRequestHeaders { get; }

-        public IHttpResponseControl HttpResponseControl { get; set; }

-        protected HttpResponseHeaders HttpResponseHeaders { get; }

-        public string HttpVersion { get; set; }

-        public bool IsUpgradableRequest { get; private set; }

-        public bool IsUpgraded { get; set; }

-        public IPAddress LocalIpAddress { get; set; }

-        public int LocalPort { get; set; }

-        protected IKestrelTrace Log { get; }

-        public Nullable<long> MaxRequestBodySize { get; set; }

-        public HttpMethod Method { get; set; }

-        bool Microsoft.AspNetCore.Http.Features.IFeatureCollection.IsReadOnly { get; }

-        object Microsoft.AspNetCore.Http.Features.IFeatureCollection.this[Type key] { get; set; }

-        int Microsoft.AspNetCore.Http.Features.IFeatureCollection.Revision { get; }

-        bool Microsoft.AspNetCore.Http.Features.IHttpBodyControlFeature.AllowSynchronousIO { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.ConnectionId { get; set; }

-        IPAddress Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalIpAddress { get; set; }

-        int Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.LocalPort { get; set; }

-        IPAddress Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemoteIpAddress { get; set; }

-        int Microsoft.AspNetCore.Http.Features.IHttpConnectionFeature.RemotePort { get; set; }

-        bool Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.IsReadOnly { get; }

-        Nullable<long> Microsoft.AspNetCore.Http.Features.IHttpMaxRequestBodySizeFeature.MaxRequestBodySize { get; set; }

-        Stream Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Body { get; set; }

-        IHeaderDictionary Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Headers { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Method { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Path { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.PathBase { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Protocol { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.QueryString { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.RawTarget { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestFeature.Scheme { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpRequestIdentifierFeature.TraceIdentifier { get; set; }

-        CancellationToken Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature.RequestAborted { get; set; }

-        Stream Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Body { get; set; }

-        bool Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.HasStarted { get; }

-        IHeaderDictionary Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.Headers { get; set; }

-        string Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.ReasonPhrase { get; set; }

-        int Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.StatusCode { get; set; }

-        bool Microsoft.AspNetCore.Http.Features.IHttpUpgradeFeature.IsUpgradableRequest { get; }

-        public IHttpOutputProducer Output { get; protected set; }

-        public string Path { get; set; }

-        public string PathBase { get; set; }

-        public string QueryString { get; set; }

-        public string RawTarget { get; set; }

-        public string ReasonPhrase { get; set; }

-        public IPAddress RemoteIpAddress { get; set; }

-        public int RemotePort { get; set; }

-        public CancellationToken RequestAborted { get; set; }

-        public Stream RequestBody { get; set; }

-        public Pipe RequestBodyPipe { get; protected set; }

-        public IHeaderDictionary RequestHeaders { get; set; }

-        public Stream ResponseBody { get; set; }

-        public IHeaderDictionary ResponseHeaders { get; set; }

-        public string Scheme { get; set; }

-        protected KestrelServerOptions ServerOptions { get; }

-        public ServiceContext ServiceContext { get; }

-        public int StatusCode { get; set; }

-        public ITimeoutControl TimeoutControl { get; }

-        public string TraceIdentifier { get; set; }

-        protected void AbortRequest();

-        protected abstract void ApplicationAbort();

-        protected virtual bool BeginRead(out ValueTask<ReadResult> awaitable);

-        protected virtual void BeginRequestProcessing();

-        protected abstract MessageBody CreateMessageBody();

-        protected abstract string CreateRequestId();

-        protected Task FireOnCompleted();

-        protected Task FireOnStarting();

-        public Task FlushAsync(CancellationToken cancellationToken = default(CancellationToken));

-        public void HandleNonBodyResponseWrite();

-        public Task InitializeResponseAsync(int firstWriteByteCount);

-        public Task InitializeResponseAwaited(Task startingTask, int firstWriteByteCount);

-        public void InitializeStreams(MessageBody messageBody);

-        TFeature Microsoft.AspNetCore.Http.Features.IFeatureCollection.Get<TFeature>();

-        void Microsoft.AspNetCore.Http.Features.IFeatureCollection.Set<TFeature>(TFeature feature);

-        void Microsoft.AspNetCore.Http.Features.IHttpRequestLifetimeFeature.Abort();

-        void Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.OnCompleted(Func<object, Task> callback, object state);

-        void Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.OnStarting(Func<object, Task> callback, object state);

-        Task<Stream> Microsoft.AspNetCore.Http.Features.IHttpUpgradeFeature.UpgradeAsync();

-        public void OnCompleted(Func<object, Task> callback, object state);

-        protected virtual void OnErrorAfterResponseStarted();

-        public void OnHeader(Span<byte> name, Span<byte> value);

-        protected virtual void OnRequestProcessingEnded();

-        protected virtual void OnRequestProcessingEnding();

-        protected abstract void OnReset();

-        public void OnStarting(Func<object, Task> callback, object state);

-        protected void PoisonRequestBodyStream(Exception abortReason);

-        public Task ProcessRequestsAsync<TContext>(IHttpApplication<TContext> application);

-        public void ProduceContinue();

-        protected Task ProduceEnd();

-        protected void ReportApplicationError(Exception ex);

-        public void Reset();

-        protected void ResetHttp1Features();

-        protected void ResetHttp2Features();

-        public void SetBadRequestState(BadHttpRequestException ex);

-        public bool StatusCanHaveBody(int statusCode);

-        public void StopStreams();

-        IEnumerator<KeyValuePair<Type, object>> System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<System.Type,System.Object>>.GetEnumerator();

-        IEnumerator System.Collections.IEnumerable.GetEnumerator();

-        public void ThrowRequestTargetRejected(Span<byte> target);

-        protected abstract bool TryParseRequest(ReadResult result, out bool endConnection);

-        protected Task TryProduceInvalidRequestResponse();

-        protected void VerifyResponseContentLength();

-        public Task WriteAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken = default(CancellationToken));

-        public Task WriteAsyncAwaited(Task initializeTask, ReadOnlyMemory<byte> data, CancellationToken cancellationToken);

-    }
-    public class HttpRequestHeaders : HttpHeaders {
 {
-        public HttpRequestHeaders();

-        public bool HasConnection { get; }

-        public bool HasTransferEncoding { get; }

-        public StringValues HeaderAccept { get; set; }

-        public StringValues HeaderAcceptCharset { get; set; }

-        public StringValues HeaderAcceptEncoding { get; set; }

-        public StringValues HeaderAcceptLanguage { get; set; }

-        public StringValues HeaderAccessControlRequestHeaders { get; set; }

-        public StringValues HeaderAccessControlRequestMethod { get; set; }

-        public StringValues HeaderAllow { get; set; }

-        public StringValues HeaderAuthorization { get; set; }

-        public StringValues HeaderCacheControl { get; set; }

-        public StringValues HeaderConnection { get; set; }

-        public StringValues HeaderContentEncoding { get; set; }

-        public StringValues HeaderContentLanguage { get; set; }

-        public StringValues HeaderContentLength { get; set; }

-        public StringValues HeaderContentLocation { get; set; }

-        public StringValues HeaderContentMD5 { get; set; }

-        public StringValues HeaderContentRange { get; set; }

-        public StringValues HeaderContentType { get; set; }

-        public StringValues HeaderCookie { get; set; }

-        public StringValues HeaderDate { get; set; }

-        public StringValues HeaderExpect { get; set; }

-        public StringValues HeaderExpires { get; set; }

-        public StringValues HeaderFrom { get; set; }

-        public StringValues HeaderHost { get; set; }

-        public StringValues HeaderIfMatch { get; set; }

-        public StringValues HeaderIfModifiedSince { get; set; }

-        public StringValues HeaderIfNoneMatch { get; set; }

-        public StringValues HeaderIfRange { get; set; }

-        public StringValues HeaderIfUnmodifiedSince { get; set; }

-        public StringValues HeaderKeepAlive { get; set; }

-        public StringValues HeaderLastModified { get; set; }

-        public StringValues HeaderMaxForwards { get; set; }

-        public StringValues HeaderOrigin { get; set; }

-        public StringValues HeaderPragma { get; set; }

-        public StringValues HeaderProxyAuthorization { get; set; }

-        public StringValues HeaderRange { get; set; }

-        public StringValues HeaderReferer { get; set; }

-        public StringValues HeaderTE { get; set; }

-        public StringValues HeaderTrailer { get; set; }

-        public StringValues HeaderTransferEncoding { get; set; }

-        public StringValues HeaderTranslate { get; set; }

-        public StringValues HeaderUpgrade { get; set; }

-        public StringValues HeaderUserAgent { get; set; }

-        public StringValues HeaderVia { get; set; }

-        public StringValues HeaderWarning { get; set; }

-        public int HostCount { get; }

-        protected override bool AddValueFast(string key, in StringValues value);

-        public unsafe void Append(byte* pKeyBytes, int keyLength, string value);

-        public void Append(Span<byte> name, string value);

-        protected override void ClearFast();

-        protected override bool CopyToFast(KeyValuePair<string, StringValues>[] array, int arrayIndex);

-        protected override int GetCountFast();

-        public HttpRequestHeaders.Enumerator GetEnumerator();

-        protected override IEnumerator<KeyValuePair<string, StringValues>> GetEnumeratorFast();

-        protected override bool RemoveFast(string key);

-        protected override void SetValueFast(string key, in StringValues value);

-        protected override bool TryGetValueFast(string key, out StringValues value);

-        public struct Enumerator : IDisposable, IEnumerator, IEnumerator<KeyValuePair<string, StringValues>> {
 {
-            public KeyValuePair<string, StringValues> Current { get; }

-            object System.Collections.IEnumerator.Current { get; }

-            public void Dispose();

-            public bool MoveNext();

-            public void Reset();

-        }
-    }
-    public enum HttpRequestTarget {
 {
-        AbsoluteForm = 1,

-        AsteriskForm = 3,

-        AuthorityForm = 2,

-        OriginForm = 0,

-        Unknown = -1,

-    }
-    public class HttpResponseHeaders : HttpHeaders {
 {
-        public HttpResponseHeaders();

-        public bool HasConnection { get; }

-        public bool HasDate { get; }

-        public bool HasServer { get; }

-        public bool HasTransferEncoding { get; }

-        public StringValues HeaderAcceptRanges { get; set; }

-        public StringValues HeaderAccessControlAllowCredentials { get; set; }

-        public StringValues HeaderAccessControlAllowHeaders { get; set; }

-        public StringValues HeaderAccessControlAllowMethods { get; set; }

-        public StringValues HeaderAccessControlAllowOrigin { get; set; }

-        public StringValues HeaderAccessControlExposeHeaders { get; set; }

-        public StringValues HeaderAccessControlMaxAge { get; set; }

-        public StringValues HeaderAge { get; set; }

-        public StringValues HeaderAllow { get; set; }

-        public StringValues HeaderCacheControl { get; set; }

-        public StringValues HeaderConnection { get; set; }

-        public StringValues HeaderContentEncoding { get; set; }

-        public StringValues HeaderContentLanguage { get; set; }

-        public StringValues HeaderContentLength { get; set; }

-        public StringValues HeaderContentLocation { get; set; }

-        public StringValues HeaderContentMD5 { get; set; }

-        public StringValues HeaderContentRange { get; set; }

-        public StringValues HeaderContentType { get; set; }

-        public StringValues HeaderDate { get; set; }

-        public StringValues HeaderETag { get; set; }

-        public StringValues HeaderExpires { get; set; }

-        public StringValues HeaderKeepAlive { get; set; }

-        public StringValues HeaderLastModified { get; set; }

-        public StringValues HeaderLocation { get; set; }

-        public StringValues HeaderPragma { get; set; }

-        public StringValues HeaderProxyAuthenticate { get; set; }

-        public StringValues HeaderRetryAfter { get; set; }

-        public StringValues HeaderServer { get; set; }

-        public StringValues HeaderSetCookie { get; set; }

-        public StringValues HeaderTrailer { get; set; }

-        public StringValues HeaderTransferEncoding { get; set; }

-        public StringValues HeaderUpgrade { get; set; }

-        public StringValues HeaderVary { get; set; }

-        public StringValues HeaderVia { get; set; }

-        public StringValues HeaderWarning { get; set; }

-        public StringValues HeaderWWWAuthenticate { get; set; }

-        protected override bool AddValueFast(string key, in StringValues value);

-        protected override void ClearFast();

-        protected override bool CopyToFast(KeyValuePair<string, StringValues>[] array, int arrayIndex);

-        protected override int GetCountFast();

-        public HttpResponseHeaders.Enumerator GetEnumerator();

-        protected override IEnumerator<KeyValuePair<string, StringValues>> GetEnumeratorFast();

-        protected override bool RemoveFast(string key);

-        public void SetRawConnection(in StringValues value, byte[] raw);

-        public void SetRawDate(in StringValues value, byte[] raw);

-        public void SetRawServer(in StringValues value, byte[] raw);

-        public void SetRawTransferEncoding(in StringValues value, byte[] raw);

-        protected override void SetValueFast(string key, in StringValues value);

-        protected override bool TryGetValueFast(string key, out StringValues value);

-        public struct Enumerator : IDisposable, IEnumerator, IEnumerator<KeyValuePair<string, StringValues>> {
 {
-            public KeyValuePair<string, StringValues> Current { get; }

-            object System.Collections.IEnumerator.Current { get; }

-            public void Dispose();

-            public bool MoveNext();

-            public void Reset();

-        }
-    }
-    public class HttpResponseTrailers : HttpHeaders {
 {
-        public HttpResponseTrailers();

-        public StringValues HeaderETag { get; set; }

-        protected override bool AddValueFast(string key, in StringValues value);

-        protected override void ClearFast();

-        protected override bool CopyToFast(KeyValuePair<string, StringValues>[] array, int arrayIndex);

-        protected override int GetCountFast();

-        public HttpResponseTrailers.Enumerator GetEnumerator();

-        protected override IEnumerator<KeyValuePair<string, StringValues>> GetEnumeratorFast();

-        protected override bool RemoveFast(string key);

-        protected override void SetValueFast(string key, in StringValues value);

-        protected override bool TryGetValueFast(string key, out StringValues value);

-        public struct Enumerator : IDisposable, IEnumerator, IEnumerator<KeyValuePair<string, StringValues>> {
 {
-            public KeyValuePair<string, StringValues> Current { get; }

-            object System.Collections.IEnumerator.Current { get; }

-            public void Dispose();

-            public bool MoveNext();

-            public void Reset();

-        }
-    }
     public enum HttpScheme {
         Http = 0,
         Https = 1,
         Unknown = -1,
     }
     public enum HttpVersion {
         Http10 = 0,
         Http11 = 1,
         Http2 = 2,
         Unknown = -1,
     }
     public interface IHttpHeadersHandler {
         void OnHeader(Span<byte> name, Span<byte> value);
+        void OnHeadersComplete();
     }
-    public interface IHttpOutputAborter {
 {
-        void Abort(ConnectionAbortedException abortReason);

-    }
-    public interface IHttpOutputProducer {
 {
-        Task FlushAsync(CancellationToken cancellationToken);

-        Task Write100ContinueAsync();

-        Task WriteAsync<T>(Func<PipeWriter, T, long> callback, T state, CancellationToken cancellationToken);

-        Task WriteDataAsync(ReadOnlySpan<byte> data, CancellationToken cancellationToken);

-        void WriteResponseHeaders(int statusCode, string ReasonPhrase, HttpResponseHeaders responseHeaders);

-        Task WriteStreamSuffixAsync();

-    }
     public interface IHttpParser<TRequestHandler> where TRequestHandler : IHttpHeadersHandler, IHttpRequestLineHandler {
-        bool ParseHeaders(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes);

+        bool ParseHeaders(TRequestHandler handler, ref SequenceReader<byte> reader);
         bool ParseRequestLine(TRequestHandler handler, in ReadOnlySequence<byte> buffer, out SequencePosition consumed, out SequencePosition examined);
     }
     public interface IHttpRequestLineHandler {
         void OnStartLine(HttpMethod method, HttpVersion version, Span<byte> target, Span<byte> path, Span<byte> query, Span<byte> customMethod, bool pathEncoded);
     }
-    public interface IHttpResponseControl {
 {
-        Task FlushAsync(CancellationToken cancellationToken);

-        void ProduceContinue();

-        Task WriteAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken);

-    }
-    public abstract class MessageBody {
 {
-        protected MessageBody(HttpProtocol context, MinDataRate minRequestBodyDataRate);

-        public virtual bool IsEmpty { get; }

-        protected IKestrelTrace Log { get; }

-        public bool RequestKeepAlive { get; protected set; }

-        public bool RequestUpgrade { get; protected set; }

-        public static MessageBody ZeroContentLengthClose { get; }

-        public static MessageBody ZeroContentLengthKeepAlive { get; }

-        protected void AddAndCheckConsumedBytes(long consumedBytes);

-        public virtual Task ConsumeAsync();

-        public virtual Task CopyToAsync(Stream destination, CancellationToken cancellationToken = default(CancellationToken));

-        protected virtual Task OnConsumeAsync();

-        protected virtual void OnDataRead(long bytesRead);

-        protected virtual void OnReadStarted();

-        protected virtual void OnReadStarting();

-        protected virtual Task OnStopAsync();

-        public virtual ValueTask<int> ReadAsync(Memory<byte> buffer, CancellationToken cancellationToken = default(CancellationToken));

-        public virtual Task StopAsync();

-        protected void TryProduceContinue();

-    }
-    public static class PathNormalizer {
 {
-        public unsafe static bool ContainsDotSegments(byte* start, byte* end);

-        public static string DecodePath(Span<byte> path, bool pathEncoded, string rawTarget, int queryLength);

-        public unsafe static int RemoveDotSegments(byte* start, byte* end);

-        public static int RemoveDotSegments(Span<byte> input);

-    }
-    public static class PipelineExtensions {
 {
-        public static ArraySegment<byte> GetArray(this Memory<byte> buffer);

-        public static ArraySegment<byte> GetArray(this ReadOnlyMemory<byte> memory);

-        public static ReadOnlySpan<byte> ToSpan(this ReadOnlySequence<byte> buffer);

-    }
-    public enum ProduceEndType {
 {
-        ConnectionKeepAlive = 2,

-        SocketDisconnect = 1,

-        SocketShutdown = 0,

-    }
-    public static class ReasonPhrases {
 {
-        public static byte[] ToStatusBytes(int statusCode, string reasonPhrase = null);

-    }
-    public enum RequestProcessingStatus {
 {
-        AppStarted = 3,

-        ParsingHeaders = 2,

-        ParsingRequestLine = 1,

-        RequestPending = 0,

-        ResponseStarted = 4,

-    }
-    public enum RequestRejectionReason {
 {
-        BadChunkSizeData = 9,

-        BadChunkSuffix = 8,

-        ChunkedRequestIncomplete = 10,

-        ConnectMethodRequired = 23,

-        FinalTransferCodingNotChunked = 19,

-        HeadersExceedMaxTotalSize = 14,

-        InvalidCharactersInHeaderName = 12,

-        InvalidContentLength = 5,

-        InvalidHostHeader = 26,

-        InvalidRequestHeader = 2,

-        InvalidRequestHeadersNoCRLF = 3,

-        InvalidRequestLine = 1,

-        InvalidRequestTarget = 11,

-        LengthRequired = 20,

-        LengthRequiredHttp10 = 21,

-        MalformedRequestInvalidHeaders = 4,

-        MissingHostHeader = 24,

-        MultipleContentLengths = 6,

-        MultipleHostHeaders = 25,

-        OptionsMethodRequired = 22,

-        RequestBodyExceedsContentLength = 28,

-        RequestBodyTimeout = 18,

-        RequestBodyTooLarge = 16,

-        RequestHeadersTimeout = 17,

-        RequestLineTooLong = 13,

-        TooManyHeaders = 15,

-        UnexpectedEndOfRequestContent = 7,

-        UnrecognizedHTTPVersion = 0,

-        UpgradeRequestCannotHavePayload = 27,

-    }
-    public enum TransferCoding {
 {
-        Chunked = 1,

-        None = 0,

-        Other = 2,

-    }
 }