Seal some internal derived classes (#9880)
This commit is contained in:
parent
22affb4cf8
commit
86728ecc17
|
|
@ -6,14 +6,14 @@ using Microsoft.Extensions.Primitives;
|
|||
|
||||
namespace Microsoft.Net.Http.Headers
|
||||
{
|
||||
internal class CookieHeaderParser : HttpHeaderParser<CookieHeaderValue>
|
||||
internal sealed class CookieHeaderParser : HttpHeaderParser<CookieHeaderValue>
|
||||
{
|
||||
internal CookieHeaderParser(bool supportsMultipleValues)
|
||||
: base(supportsMultipleValues)
|
||||
{
|
||||
}
|
||||
|
||||
public sealed override bool TryParseValue(StringSegment value, ref int index, out CookieHeaderValue parsedValue)
|
||||
public override bool TryParseValue(StringSegment value, ref int index, out CookieHeaderValue parsedValue)
|
||||
{
|
||||
parsedValue = null;
|
||||
|
||||
|
|
@ -27,8 +27,7 @@ namespace Microsoft.Net.Http.Headers
|
|||
return SupportsMultipleValues;
|
||||
}
|
||||
|
||||
var separatorFound = false;
|
||||
var current = GetNextNonEmptyOrWhitespaceIndex(value, index, SupportsMultipleValues, out separatorFound);
|
||||
var current = GetNextNonEmptyOrWhitespaceIndex(value, index, SupportsMultipleValues, out bool separatorFound);
|
||||
|
||||
if (separatorFound && !SupportsMultipleValues)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.Net.Http.Headers
|
|||
// type to throw if 'null' gets added. Collection<T> internally uses List<T> which comes at some cost. In addition
|
||||
// Collection<T>.Add() calls List<T>.InsertItem() which is an O(n) operation (compared to O(1) for List<T>.Add()).
|
||||
// This type is only used for very small collections (1-2 items) to keep the impact of using Collection<T> small.
|
||||
internal class ObjectCollection<T> : Collection<T>
|
||||
internal sealed class ObjectCollection<T> : Collection<T>
|
||||
{
|
||||
internal static readonly Action<T> DefaultValidator = CheckNotNull;
|
||||
internal static readonly ObjectCollection<T> EmptyReadOnlyCollection
|
||||
|
|
@ -57,22 +57,12 @@ namespace Microsoft.Net.Http.Headers
|
|||
|
||||
public bool IsReadOnly => ((ICollection<T>)this).IsReadOnly;
|
||||
|
||||
protected override void ClearItems()
|
||||
{
|
||||
base.ClearItems();
|
||||
}
|
||||
|
||||
protected override void InsertItem(int index, T item)
|
||||
{
|
||||
_validator(item);
|
||||
base.InsertItem(index, item);
|
||||
}
|
||||
|
||||
protected override void RemoveItem(int index)
|
||||
{
|
||||
base.RemoveItem(index);
|
||||
}
|
||||
|
||||
protected override void SetItem(int index, T item)
|
||||
{
|
||||
_validator(item);
|
||||
|
|
|
|||
|
|
@ -472,7 +472,7 @@ namespace Microsoft.AspNetCore.Http
|
|||
=> string.IsNullOrEmpty(s) ? new PathString(s) : FromUriComponent(s);
|
||||
}
|
||||
|
||||
internal class PathStringConverter : TypeConverter
|
||||
internal sealed class PathStringConverter : TypeConverter
|
||||
{
|
||||
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
|
||||
=> sourceType == typeof(string)
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Http.Internal
|
|||
/// <summary>
|
||||
/// A Stream that wraps another stream starting at a certain offset and reading for the given length.
|
||||
/// </summary>
|
||||
internal class ReferenceReadStream : Stream
|
||||
internal sealed class ReferenceReadStream : Stream
|
||||
{
|
||||
private readonly Stream _inner;
|
||||
private readonly long _innerOffset;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.WebUtilities
|
||||
{
|
||||
internal class MultipartReaderStream : Stream
|
||||
internal sealed class MultipartReaderStream : Stream
|
||||
{
|
||||
private readonly MultipartBoundary _boundary;
|
||||
private readonly BufferedReadStream _innerStream;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using Microsoft.Extensions.Logging;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||
{
|
||||
internal class LoggingStream : Stream
|
||||
internal sealed class LoggingStream : Stream
|
||||
{
|
||||
private readonly Stream _inner;
|
||||
private readonly ILogger _logger;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using System.Buffers;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Adapter.Internal
|
||||
{
|
||||
internal class RawStream : Stream
|
||||
internal sealed class RawStream : Stream
|
||||
{
|
||||
private readonly PipeReader _input;
|
||||
private readonly PipeWriter _output;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using Microsoft.Extensions.Logging;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core
|
||||
{
|
||||
internal class AnyIPListenOptions : ListenOptions
|
||||
internal sealed class AnyIPListenOptions : ListenOptions
|
||||
{
|
||||
internal AnyIPListenOptions(int port)
|
||||
: base(new IPEndPoint(IPAddress.IPv6Any, port))
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Https.Internal
|
||||
{
|
||||
internal class ClosedStream : Stream
|
||||
internal sealed class ClosedStream : Stream
|
||||
{
|
||||
private static readonly Task<int> ZeroResultTask = Task.FromResult(result: 0);
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
|||
/// <summary>
|
||||
/// http://tools.ietf.org/html/rfc2616#section-3.6.1
|
||||
/// </summary>
|
||||
internal class Http1ChunkedEncodingMessageBody : Http1MessageBody
|
||||
internal sealed class Http1ChunkedEncodingMessageBody : Http1MessageBody
|
||||
{
|
||||
// byte consts don't have a data type annotation so we pre-cast it
|
||||
private const byte ByteCR = (byte)'\r';
|
||||
|
|
@ -209,7 +209,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
|||
_requestBodyPipe.Reset();
|
||||
}
|
||||
|
||||
protected void Copy(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer)
|
||||
private void Copy(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer)
|
||||
{
|
||||
if (readableBuffer.IsSingleSegment)
|
||||
{
|
||||
|
|
@ -229,7 +229,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
|||
_pumpTask = PumpAsync();
|
||||
}
|
||||
|
||||
protected bool Read(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer, out SequencePosition consumed, out SequencePosition examined)
|
||||
private bool Read(ReadOnlySequence<byte> readableBuffer, PipeWriter writableBuffer, out SequencePosition consumed, out SequencePosition examined)
|
||||
{
|
||||
consumed = default;
|
||||
examined = default;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ using Microsoft.AspNetCore.Connections;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class Http1ContentLengthMessageBody : Http1MessageBody
|
||||
internal sealed class Http1ContentLengthMessageBody : Http1MessageBody
|
||||
{
|
||||
private ReadResult _readResult;
|
||||
private readonly long _contentLength;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
|||
/// The upgrade stream uses the raw connection stream instead of going through the RequestBodyPipe. This
|
||||
/// removes the redundant copy from the transport pipe to the body pipe.
|
||||
/// </summary>
|
||||
internal class Http1UpgradeMessageBody : Http1MessageBody
|
||||
internal sealed class Http1UpgradeMessageBody : Http1MessageBody
|
||||
{
|
||||
public bool _completed;
|
||||
public Http1UpgradeMessageBody(Http1Connection context)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
|||
/// <summary>
|
||||
/// Default HttpRequest PipeReader implementation to be used by Kestrel.
|
||||
/// </summary>
|
||||
internal class HttpRequestPipeReader : PipeReader
|
||||
internal sealed class HttpRequestPipeReader : PipeReader
|
||||
{
|
||||
private MessageBody _body;
|
||||
private HttpStreamState _state;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ using Microsoft.AspNetCore.Http.Features;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class HttpRequestStream : ReadOnlyPipeStream
|
||||
internal sealed class HttpRequestStream : ReadOnlyPipeStream
|
||||
{
|
||||
private HttpRequestPipeReader _pipeReader;
|
||||
private readonly IHttpBodyControlFeature _bodyControl;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class HttpResponsePipeWriter : PipeWriter
|
||||
internal sealed class HttpResponsePipeWriter : PipeWriter
|
||||
{
|
||||
private HttpStreamState _state;
|
||||
private readonly IHttpResponseControl _pipeControl;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Http.Features;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class HttpResponseStream : WriteOnlyPipeStream
|
||||
internal sealed class HttpResponseStream : WriteOnlyPipeStream
|
||||
{
|
||||
private readonly HttpResponsePipeWriter _pipeWriter;
|
||||
private readonly IHttpBodyControlFeature _bodyControl;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class HttpUpgradeStream : Stream
|
||||
internal sealed class HttpUpgradeStream : Stream
|
||||
{
|
||||
private readonly Stream _requestStream;
|
||||
private readonly Stream _responseStream;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http
|
||||
{
|
||||
internal class ZeroContentLengthMessageBody : MessageBody
|
||||
internal sealed class ZeroContentLengthMessageBody : MessageBody
|
||||
{
|
||||
public ZeroContentLengthMessageBody(bool keepAlive)
|
||||
: base(null, null)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ using System.Runtime.CompilerServices;
|
|||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
// Mimics BinaryPrimitives with oddly sized units
|
||||
internal class Bitshifter
|
||||
internal static class Bitshifter
|
||||
{
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static uint ReadUInt24BigEndian(ReadOnlySpan<byte> source)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.HPack
|
||||
{
|
||||
internal class HPackDecodingException : Exception
|
||||
internal sealed class HPackDecodingException : Exception
|
||||
{
|
||||
public HPackDecodingException(string message)
|
||||
: base(message)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.HPack
|
||||
{
|
||||
internal class HPackEncodingException : Exception
|
||||
internal sealed class HPackEncodingException : Exception
|
||||
{
|
||||
public HPackEncodingException(string message)
|
||||
: base(message)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.HPack
|
||||
{
|
||||
internal class HuffmanDecodingException : Exception
|
||||
internal sealed class HuffmanDecodingException : Exception
|
||||
{
|
||||
public HuffmanDecodingException(string message)
|
||||
: base(message)
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2ConnectionErrorException : Exception
|
||||
internal sealed class Http2ConnectionErrorException : Exception
|
||||
{
|
||||
public Http2ConnectionErrorException(string message, Http2ErrorCode errorCode)
|
||||
: base($"HTTP/2 connection error ({errorCode}): {message}")
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2MessageBody : MessageBody
|
||||
internal sealed class Http2MessageBody : MessageBody
|
||||
{
|
||||
private readonly Http2Stream _context;
|
||||
private ReadResult _readResult;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2SettingsParameterOutOfRangeException : Exception
|
||||
internal sealed class Http2SettingsParameterOutOfRangeException : Exception
|
||||
{
|
||||
public Http2SettingsParameterOutOfRangeException(Http2SettingsParameter parameter, long lowerBound, long upperBound)
|
||||
: base($"HTTP/2 SETTINGS parameter {parameter} must be set to a value between {lowerBound} and {upperBound}")
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2.FlowControl;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2StreamContext : HttpConnectionContext
|
||||
internal sealed class Http2StreamContext : HttpConnectionContext
|
||||
{
|
||||
public int StreamId { get; set; }
|
||||
public IHttp2StreamLifetimeHandler StreamLifetimeHandler { get; set; }
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using System;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2StreamErrorException : Exception
|
||||
internal sealed class Http2StreamErrorException : Exception
|
||||
{
|
||||
public Http2StreamErrorException(int streamId, string message, Http2ErrorCode errorCode)
|
||||
: base($"HTTP/2 stream ID {streamId} error ({errorCode}): {message}")
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Hosting.Server;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http2
|
||||
{
|
||||
internal class Http2Stream<TContext> : Http2Stream
|
||||
internal sealed class Http2Stream<TContext> : Http2Stream
|
||||
{
|
||||
private readonly IHttpApplication<TContext> _application;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||
{
|
||||
internal class ThrowingWasUpgradedWriteOnlyStream : WriteOnlyStream
|
||||
internal sealed class ThrowingWasUpgradedWriteOnlyStream : WriteOnlyStream
|
||||
{
|
||||
public override bool CanSeek => false;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Infrastructure
|
||||
{
|
||||
internal class WrappingStream : Stream
|
||||
internal sealed class WrappingStream : Stream
|
||||
{
|
||||
private Stream _inner;
|
||||
private bool _disposed;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ using Microsoft.Extensions.Logging;
|
|||
|
||||
namespace Microsoft.AspNetCore.Server.Kestrel.Core
|
||||
{
|
||||
internal class LocalhostListenOptions : ListenOptions
|
||||
internal sealed class LocalhostListenOptions : ListenOptions
|
||||
{
|
||||
internal LocalhostListenOptions(int port)
|
||||
: base(new IPEndPoint(IPAddress.Loopback, port))
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ namespace System.Buffers
|
|||
/// <summary>
|
||||
/// Used to allocate and distribute re-usable blocks of memory.
|
||||
/// </summary>
|
||||
internal class SlabMemoryPool : MemoryPool<byte>
|
||||
internal sealed class SlabMemoryPool : MemoryPool<byte>
|
||||
{
|
||||
/// <summary>
|
||||
/// The size of a block. 4096 is chosen because most operating systems use 4k pages.
|
||||
|
|
|
|||
Loading…
Reference in New Issue