Beispiel #1
0
    static bool RequestLineRb()
    {
        ReadOnlyBuffer buffer   = new ReadOnlyBuffer(s_plaintextTechEmpowerRequestBytes, 0, s_plaintextTechEmpowerHeadersBytes.Length);
        var            parser   = new HttpParser();
        var            request  = new Request();
        Position       consumed = default;
        Position       read;
        bool           success = true;

        foreach (var iteration in Benchmark.Iterations)
        {
            using (iteration.StartMeasurement())
            {
                for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                {
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out read);
                }
            }
        }

        return(success);
    }
Beispiel #2
0
    static bool FullRequestRb()
    {
        ReadOnlyBuffer buffer        = new ReadOnlyBuffer(s_plaintextTechEmpowerRequestBytes);
        var            parser        = new HttpParser();
        var            request       = new Request();
        int            consumedBytes = 0;
        Position       examined;
        Position       consumed = buffer.Start;
        bool           success  = true;

        foreach (var iteration in Benchmark.Iterations)
        {
            using (iteration.StartMeasurement()) {
                for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                {
                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined);
                    success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes);

                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined);
                    success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes);

                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined);
                    success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes);

                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined);
                    success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes);

                    success = success && parser.ParseRequestLine(request, buffer, out consumed, out examined);
                    success = success && parser.ParseHeaders(request, buffer.Slice(consumed), out consumed, out examined, out consumedBytes);
                }
            }
        }

        return(success);
    }
Beispiel #3
0
        public bool TryGet(ref Collections.Sequences.Position position, out ReadOnlyMemory <byte> item, bool advance = true)
        {
            var(data, index) = position.Get <object>();
            var p      = new Position(data, index);
            var result = _buffer.TryGet(ref p, out item);

            if (advance)
            {
                position = Collections.Sequences.Position.Create(p.Segment, p.Index);
            }

            return(result);
        }