Line data Source code
1 : //
2 : // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
3 : //
4 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 : //
7 : // Official repository: https://github.com/cppalliance/http_proto
8 : //
9 :
10 : #ifndef BOOST_HTTP_PROTO_RESPONSE_PARSER_HPP
11 : #define BOOST_HTTP_PROTO_RESPONSE_PARSER_HPP
12 :
13 : #include <boost/http_proto/detail/config.hpp>
14 : #include <boost/http_proto/error.hpp>
15 : #include <boost/http_proto/parser.hpp>
16 : #include <boost/http_proto/response_view.hpp>
17 : #include <boost/http_proto/status.hpp>
18 : #include <cstddef>
19 :
20 : namespace boost {
21 : namespace http_proto {
22 :
23 : class BOOST_SYMBOL_VISIBLE
24 : response_parser
25 : : public parser
26 : {
27 : public:
28 : /** Configuration settings for parsing requests
29 : */
30 : struct config : config_base
31 : {
32 : /** Constructor
33 : */
34 10 : config() noexcept
35 10 : {
36 10 : body_limit = 1024 * 1024;
37 10 : }
38 : };
39 :
40 : /** Constructor
41 : */
42 : BOOST_HTTP_PROTO_DECL
43 : explicit
44 : response_parser(context& ctx);
45 :
46 : /** Prepare for the next message on the stream.
47 :
48 : This informs the parser not to read a
49 : payload for the next message, regardless
50 : of the presence or absence of certain
51 : fields such as Content-Length or a chunked
52 : Transfer-Encoding. Depending on the request,
53 : some responses do not carry a body. For
54 : example, a 200 response to a CONNECT
55 : request from a tunneling proxy, or a
56 : response to a HEAD request. In these
57 : cases, callers may use this function
58 : inform the parser that no body is
59 : expected. The parser will consider the
60 : message complete after the header has
61 : been received.
62 :
63 : @par Preconditions
64 :
65 : This function must called before any calls to parse
66 : the current message.
67 :
68 : @see
69 : https://datatracker.ietf.org/doc/html/rfc7230#section-3.3
70 : */
71 : void
72 : start_head_response()
73 : {
74 : start_impl(true);
75 : }
76 :
77 : /** Return the parsed response headers.
78 : */
79 : BOOST_HTTP_PROTO_DECL
80 : response_view
81 : get() const;
82 : };
83 :
84 : } // http_proto
85 : } // boost
86 :
87 : #endif
|