src/config.cpp

95.7% Lines (22/23) 100.0% Functions (3/3)
src/config.cpp
Line TLA Hits Source Code
1 //
2 // Copyright (c) 2026 Vinnie Falco ([email protected])
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
8 //
9
10 #include <boost/http/config.hpp>
11 #include <boost/http/detail/except.hpp>
12 #include <boost/http/detail/header.hpp>
13
14 #include <cstdint>
15 #include <memory>
16
17 namespace boost {
18 namespace http {
19
20 std::size_t
21 73538 parser_config_impl::
22 max_overread() const noexcept
23 {
24 73538 return headers.max_size + min_buffer;
25 }
26
27 std::shared_ptr<parser_config_impl const>
28 29 make_parser_config(parser_config cfg)
29 {
30 29 if(cfg.max_prepare < 1)
31 detail::throw_invalid_argument();
32
33 29 auto impl = std::make_shared<parser_config_impl>(std::move(cfg));
34
35 /*
36 | fb | cb0 | cb1 | T | f |
37
38 fb flat_dynamic_buffer headers.max_size
39 cb0 circular_buffer min_buffer
40 cb1 circular_buffer min_buffer
41 f table max_table_space
42 */
43
44 29 std::size_t space_needed = 0;
45
46 29 space_needed += impl->headers.valid_space_needed();
47
48 // cb0_, cb1_
49 29 space_needed += impl->min_buffer + impl->min_buffer;
50
51 // round up to alignof(detail::header::entry)
52 29 auto const al = alignof(detail::header::entry);
53 29 space_needed = al * ((space_needed + al - 1) / al);
54
55 29 impl->space_needed = space_needed;
56 29 impl->max_codec = 0; // not currently used for parser
57
58 58 return impl;
59 29 }
60
61 std::shared_ptr<serializer_config_impl const>
62 2 make_serializer_config(serializer_config cfg)
63 {
64 2 auto impl = std::make_shared<serializer_config_impl>();
65 2 static_cast<serializer_config&>(*impl) = std::move(cfg);
66
67 2 std::size_t space_needed = 0;
68 2 space_needed += impl->payload_buffer;
69
70 2 impl->space_needed = space_needed;
71
72 4 return impl;
73 2 }
74
75 } // http
76 } // boost
77