File: GenericHeaderParser.cs
Web Access
Project: src\src\Http\Headers\src\Microsoft.Net.Http.Headers.csproj (Microsoft.Net.Http.Headers)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.Primitives;
 
namespace Microsoft.Net.Http.Headers;
 
internal sealed class GenericHeaderParser<T> : BaseHeaderParser<T>
{
    internal delegate int GetParsedValueLengthDelegate(StringSegment value, int startIndex, out T? parsedValue);
 
    private readonly GetParsedValueLengthDelegate _getParsedValueLength;
 
    internal GenericHeaderParser(bool supportsMultipleValues, GetParsedValueLengthDelegate getParsedValueLength)
        : base(supportsMultipleValues)
    {
        ArgumentNullException.ThrowIfNull(getParsedValueLength);
 
        _getParsedValueLength = getParsedValueLength;
    }
 
    protected override int GetParsedValueLength(StringSegment value, int startIndex, out T? parsedValue)
    {
        return _getParsedValueLength(value, startIndex, out parsedValue);
    }
}