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/buffers 8 : // 9 : 10 : #include <boost/http_proto/source.hpp> 11 : #include <boost/buffers/mutable_buffer.hpp> 12 : #include <boost/assert.hpp> 13 : 14 : namespace boost { 15 : namespace http_proto { 16 : 17 : auto 18 22 : source:: 19 : on_read( 20 : buffers::mutable_buffer_span bs) -> 21 : results 22 : { 23 22 : results rv; 24 22 : auto it = bs.begin(); 25 22 : auto const end_ = bs.end(); 26 22 : if(it == end_) 27 1 : return rv; 28 16 : do 29 : { 30 37 : buffers::mutable_buffer b(*it++); 31 37 : rv += on_read(b); 32 37 : if(rv.ec.failed()) 33 3 : return rv; 34 34 : if(rv.finished) 35 7 : break; 36 : } 37 27 : while(it != end_); 38 18 : return rv; 39 : } 40 : 41 : } // http_proto 42 : } // boost