LCOV - code coverage report
Current view: top level - src - config.cpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 95.7 % 23 22
Test Date: 2026-02-09 01:37:05 Functions: 100.0 % 3 3

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2026 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
       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        73736 : parser_config_impl::
      22              : max_overread() const noexcept
      23              : {
      24        73736 :     return headers.max_size + min_buffer;
      25              : }
      26              : 
      27              : std::shared_ptr<parser_config_impl const>
      28           30 : make_parser_config(parser_config cfg)
      29              : {
      30           30 :     if(cfg.max_prepare < 1)
      31            0 :         detail::throw_invalid_argument();
      32              : 
      33           30 :     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           30 :     std::size_t space_needed = 0;
      45              : 
      46           30 :     space_needed += impl->headers.valid_space_needed();
      47              : 
      48              :     // cb0_, cb1_
      49           30 :     space_needed += impl->min_buffer + impl->min_buffer;
      50              : 
      51              :     // round up to alignof(detail::header::entry)
      52           30 :     auto const al = alignof(detail::header::entry);
      53           30 :     space_needed = al * ((space_needed + al - 1) / al);
      54              : 
      55           30 :     impl->space_needed = space_needed;
      56           30 :     impl->max_codec = 0;  // not currently used for parser
      57              : 
      58           60 :     return impl;
      59           30 : }
      60              : 
      61              : std::shared_ptr<serializer_config_impl const>
      62            3 : make_serializer_config(serializer_config cfg)
      63              : {
      64            3 :     auto impl = std::make_shared<serializer_config_impl>();
      65            3 :     static_cast<serializer_config&>(*impl) = std::move(cfg);
      66              : 
      67            3 :     std::size_t space_needed = 0;
      68            3 :     space_needed += impl->payload_buffer;
      69              : 
      70            3 :     impl->space_needed = space_needed;
      71              : 
      72            6 :     return impl;
      73            3 : }
      74              : 
      75              : } // http
      76              : } // boost
        

Generated by: LCOV version 2.3