Line data Source code
1 : //
2 : // Copyright (c) 2023 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 : #include <boost/http_proto/sink.hpp>
11 :
12 : namespace boost {
13 : namespace http_proto {
14 :
15 : auto
16 18440 : sink::
17 : on_write(
18 : bool,
19 : boost::span<buffers::const_buffer const> bs,
20 : bool more) ->
21 : results
22 : {
23 18440 : auto it = bs.begin();
24 18440 : auto const end_ = bs.end();
25 18440 : results rv;
26 18440 : if(it == end_)
27 0 : return rv;
28 : do
29 : {
30 36881 : buffers::const_buffer b(*it++);
31 36881 : rv += on_write(
32 : b,
33 73762 : it != end_ || more);
34 36881 : if(rv.ec.failed())
35 3 : return rv;
36 : }
37 36878 : while(it != end_);
38 18437 : return rv;
39 : }
40 :
41 : } // http_proto
42 : } // boost
|