File Coverage

/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux/Protocol/HTTP.x/i/panda/protocol/http/RequestParser.h
Criterion Covered Total %
statement 2 2 100.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 2 2 100.0


line stmt bran cond sub pod time code
1             #pragma once
2             #include "error.h"
3             #include "MessageParser.h"
4              
5             namespace panda { namespace protocol { namespace http {
6              
7             struct IRequestFactory {
8             virtual RequestSP new_request () = 0;
9             };
10              
11 238           struct RequestParser : MessageParser {
12 632           struct Result {
13             RequestSP request;
14             size_t position;
15             State state;
16             std::error_code error;
17             };
18              
19             struct IFactory {
20             virtual RequestSP new_request () = 0;
21             };
22              
23             RequestParser (IFactory* = nullptr);
24             RequestParser (RequestParser&&) = default;
25              
26             Result parse (const string&);
27              
28             Result parse_shift (string& s) {
29             auto result = parse(s);
30             s.offset(result.position);
31             result.position = 0;
32             return result;
33             }
34              
35             void reset ();
36              
37             private:
38             IFactory* factory;
39              
40             RequestSP new_request () const { return factory ? factory->new_request() : make_iptr(); }
41              
42             void parse_cookie (const string&);
43             };
44              
45             }}}