LCOV - code coverage report
Current view: top level - libs/http_proto/src/detail/filter.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 88.5 % 26 23
Test Date: 2025-09-21 18:08:14 Functions: 100.0 % 1 1

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2023 Vinnie Falco (vinnie.falco@gmail.com)
       3              : // Copyright (c) 2024 Mohammad Nejati
       4              : //
       5              : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       6              : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       7              : //
       8              : // Official repository: https://github.com/cppalliance/http_proto
       9              : //
      10              : 
      11              : #include "src/detail/filter.hpp"
      12              : 
      13              : #include <boost/buffers/front.hpp>
      14              : 
      15              : namespace boost {
      16              : namespace http_proto {
      17              : namespace detail {
      18              : 
      19              : auto
      20        61068 : filter::
      21              : process(
      22              :     buffers::slice_of<
      23              :         boost::span<const buffers::mutable_buffer>> out,
      24              :     buffers::const_buffer_pair in,
      25              :     bool more) -> results
      26              : {
      27        61068 :     results rv;
      28        61068 :     bool p_more = true;
      29              :     for(;;)
      30              :     {
      31        61497 :         if(!more && p_more && in[1].size() == 0)
      32              :         {
      33          178 :             if(buffers::size(out) < min_out_buffer())
      34              :             {
      35            0 :                 rv.out_short = true;
      36        61068 :                 return rv;
      37              :             }
      38          178 :             p_more = false;
      39              :         }
      40              : 
      41        61497 :         auto ob = buffers::front(out);
      42        61497 :         auto ib = buffers::front(in);
      43        61497 :         auto rs = do_process(ob, ib, p_more);
      44              : 
      45        61497 :         rv.in_bytes  += rs.in_bytes;
      46        61497 :         rv.out_bytes += rs.out_bytes;
      47              : 
      48        61497 :         if(rs.ec.failed())
      49              :         {
      50            0 :             rv.ec = rs.ec;
      51            0 :             return rv;
      52              :         }
      53              : 
      54        61497 :         if(rs.finished)
      55              :         {
      56          172 :             rv.finished = true;
      57          172 :             return rv;
      58              :         }
      59              : 
      60        61325 :         buffers::trim_front(out, rs.out_bytes);
      61        61325 :         buffers::trim_front(in, rs.in_bytes);
      62              : 
      63        61325 :         if(buffers::size(out) == 0)
      64         6713 :             return rv;
      65              : 
      66        54612 :         if(buffers::size(in) == 0 && rs.out_bytes < ob.size())
      67        54183 :             return rv;
      68          429 :     }
      69              : }
      70              : 
      71              : } // detail
      72              : } // http_proto
      73              : } // boost
        

Generated by: LCOV version 2.1