From f6108928d829e414df01d10ed1c47edf35dc150b Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Tue, 13 Mar 2018 20:54:01 -0400 Subject: [PATCH] Pass ReadOnlySequence via in (#2389) * Pass ReadOnlySequence via in --- benchmarks/Kestrel.Performance/Mocks/NullParser.cs | 5 ++--- src/Kestrel.Core/Internal/Http/HttpParser.cs | 10 ++++------ src/Kestrel.Core/Internal/Http/IHttpParser.cs | 5 ++--- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/benchmarks/Kestrel.Performance/Mocks/NullParser.cs b/benchmarks/Kestrel.Performance/Mocks/NullParser.cs index 99564a460b..556eaa7dbb 100644 --- a/benchmarks/Kestrel.Performance/Mocks/NullParser.cs +++ b/benchmarks/Kestrel.Performance/Mocks/NullParser.cs @@ -3,7 +3,6 @@ using System; using System.Buffers; -using System.Collections; using System.Text; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http; @@ -22,7 +21,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance public static readonly NullParser Instance = new NullParser(); - public bool ParseHeaders(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes) + public bool ParseHeaders(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes) { handler.OnHeader(new Span(_hostHeaderName), new Span(_hostHeaderValue)); handler.OnHeader(new Span(_acceptHeaderName), new Span(_acceptHeaderValue)); @@ -35,7 +34,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Performance return true; } - public bool ParseRequestLine(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined) + public bool ParseRequestLine(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined) { handler.OnStartLine(HttpMethod.Get, HttpVersion.Http11, diff --git a/src/Kestrel.Core/Internal/Http/HttpParser.cs b/src/Kestrel.Core/Internal/Http/HttpParser.cs index 416976b8ac..594757eb4c 100644 --- a/src/Kestrel.Core/Internal/Http/HttpParser.cs +++ b/src/Kestrel.Core/Internal/Http/HttpParser.cs @@ -3,11 +3,9 @@ using System; using System.Buffers; -using System.Collections; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using Microsoft.AspNetCore.Protocols.Abstractions; using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure; namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http @@ -34,7 +32,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http private const byte ByteQuestionMark = (byte)'?'; private const byte BytePercentage = (byte)'%'; - public unsafe bool ParseRequestLine(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined) + public unsafe bool ParseRequestLine(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined) { consumed = buffer.Start; examined = buffer.End; @@ -52,7 +50,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http // No request line end return false; } - else if (TryGetNewLine(ref buffer, out var found)) + else if (TryGetNewLine(buffer, out var found)) { span = buffer.Slice(consumed, found).ToSpan(); consumed = found; @@ -189,7 +187,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http handler.OnStartLine(method, httpVersion, targetBuffer, pathBuffer, query, customMethod, pathEncoded); } - public unsafe bool ParseHeaders(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes) + public unsafe bool ParseHeaders(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes) { consumed = buffer.Start; examined = buffer.End; @@ -419,7 +417,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http } [MethodImpl(MethodImplOptions.NoInlining)] - private static bool TryGetNewLine(ref ReadOnlySequence buffer, out SequencePosition found) + private static bool TryGetNewLine(in ReadOnlySequence buffer, out SequencePosition found) { var byteLfPosition = buffer.PositionOf(ByteLF); if (byteLfPosition != null) diff --git a/src/Kestrel.Core/Internal/Http/IHttpParser.cs b/src/Kestrel.Core/Internal/Http/IHttpParser.cs index 2cd77a3cd1..efd8e9445b 100644 --- a/src/Kestrel.Core/Internal/Http/IHttpParser.cs +++ b/src/Kestrel.Core/Internal/Http/IHttpParser.cs @@ -3,14 +3,13 @@ using System; using System.Buffers; -using System.Collections; namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http { public interface IHttpParser where TRequestHandler : IHttpHeadersHandler, IHttpRequestLineHandler { - bool ParseRequestLine(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined); + bool ParseRequestLine(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined); - bool ParseHeaders(TRequestHandler handler, ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes); + bool ParseHeaders(TRequestHandler handler, in ReadOnlySequence buffer, out SequencePosition consumed, out SequencePosition examined, out int consumedBytes); } }