1616#include < boost/asio/coroutine.hpp>
1717#include < boost/asio/immediate.hpp>
1818#include < boost/asio/steady_timer.hpp>
19- #include < boost/buffers/prefix.hpp>
19+ #include < boost/buffers/slice.hpp>
20+ #include < boost/core/span.hpp>
2021#include < boost/http_proto/parser.hpp>
2122#include < boost/http_proto/serializer.hpp>
2223
@@ -55,7 +56,7 @@ class any_stream
5556
5657 virtual void
5758 async_write_some (
58- const buffers::const_buffer_subspan & buffers,
59+ const buffers::slice_of<boost::span<buffers::const_buffer const >> & buffers,
5960 asio::any_completion_handler<void (error_code, std::size_t )>
6061 handler) override
6162 {
@@ -64,7 +65,7 @@ class any_stream
6465
6566 virtual void
6667 async_read_some (
67- const buffers::mutable_buffer_subspan & buffers,
68+ const buffers::slice_of<boost::span<buffers::mutable_buffer const >> & buffers,
6869 asio::any_completion_handler<void (error_code, std::size_t )>
6970 handler) override
7071 {
@@ -152,7 +153,7 @@ class any_stream
152153 }
153154 BOOST_ASIO_CORO_YIELD
154155 stream_->async_write_some (
155- buffers:: prefix (buffers, wr_remain_),
156+ prefix (buffers, wr_remain_),
156157 std::move (self));
157158 wr_remain_ -= n;
158159 self.complete (ec, n);
@@ -190,7 +191,7 @@ class any_stream
190191 }
191192 BOOST_ASIO_CORO_YIELD
192193 stream_->async_read_some (
193- buffers:: prefix (buffers, rd_remain_),
194+ prefix (buffers, rd_remain_),
194195 std::move (self));
195196 rd_remain_ -= n;
196197 self.complete (ec, n);
@@ -225,12 +226,12 @@ class any_stream
225226
226227 virtual void
227228 async_write_some (
228- const buffers::const_buffer_subspan &,
229+ const buffers::slice_of<boost::span<buffers::const_buffer const >> &,
229230 asio::any_completion_handler<void (error_code, std::size_t )>) = 0 ;
230231
231232 virtual void
232233 async_read_some (
233- const buffers::mutable_buffer_subspan &,
234+ const buffers::slice_of<boost::span<buffers::mutable_buffer const >> &,
234235 asio::any_completion_handler<void (error_code, std::size_t )>) = 0 ;
235236
236237 virtual void async_shutdown (
@@ -239,6 +240,30 @@ class any_stream
239240 virtual ~base () = default ;
240241 };
241242
243+ static
244+ buffers::slice_of<
245+ boost::span<buffers::const_buffer const >>
246+ prefix (
247+ buffers::slice_of<
248+ boost::span<buffers::const_buffer const >> bs,
249+ std::size_t n)
250+ {
251+ buffers::keep_front (bs, n);
252+ return bs;
253+ }
254+
255+ static
256+ buffers::slice_of<
257+ boost::span<buffers::mutable_buffer const >>
258+ prefix (
259+ buffers::slice_of<boost::span<
260+ buffers::mutable_buffer const >> bs,
261+ std::size_t n)
262+ {
263+ buffers::keep_front (bs, n);
264+ return bs;
265+ }
266+
242267 std::unique_ptr<base> stream_;
243268 asio::steady_timer rd_timer;
244269 asio::steady_timer wr_timer;
0 commit comments