mirror of
https://github.com/boostorg/beast.git
synced 2025-07-31 13:27:33 +02:00
Tidy up read implementation
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
Version 210:
|
||||||
|
|
||||||
|
* Tidy up read implementation
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
Version 209:
|
Version 209:
|
||||||
|
|
||||||
* Faster http::string_to_field
|
* Faster http::string_to_field
|
||||||
|
@@ -74,25 +74,21 @@ public:
|
|||||||
std::size_t max_prepare;
|
std::size_t max_prepare;
|
||||||
BOOST_ASIO_CORO_REENTER(*this)
|
BOOST_ASIO_CORO_REENTER(*this)
|
||||||
{
|
{
|
||||||
max_size = cond_(ec, total_, b_);
|
for(;;)
|
||||||
max_prepare = std::min<std::size_t>(
|
|
||||||
std::max<std::size_t>(
|
|
||||||
512, b_.capacity() - b_.size()),
|
|
||||||
std::min<std::size_t>(
|
|
||||||
max_size, b_.max_size() - b_.size()));
|
|
||||||
while(max_prepare > 0)
|
|
||||||
{
|
{
|
||||||
BOOST_ASIO_CORO_YIELD
|
|
||||||
s_.async_read_some(
|
|
||||||
b_.prepare(max_prepare), std::move(*this));
|
|
||||||
b_.commit(bytes_transferred);
|
|
||||||
total_ += bytes_transferred;
|
|
||||||
max_size = cond_(ec, total_, b_);
|
max_size = cond_(ec, total_, b_);
|
||||||
max_prepare = std::min<std::size_t>(
|
max_prepare = std::min<std::size_t>(
|
||||||
std::max<std::size_t>(
|
std::max<std::size_t>(
|
||||||
512, b_.capacity() - b_.size()),
|
512, b_.capacity() - b_.size()),
|
||||||
std::min<std::size_t>(
|
std::min<std::size_t>(
|
||||||
max_size, b_.max_size() - b_.size()));
|
max_size, b_.max_size() - b_.size()));
|
||||||
|
if(max_prepare == 0)
|
||||||
|
break;
|
||||||
|
BOOST_ASIO_CORO_YIELD
|
||||||
|
s_.async_read_some(
|
||||||
|
b_.prepare(max_prepare), std::move(*this));
|
||||||
|
b_.commit(bytes_transferred);
|
||||||
|
total_ += bytes_transferred;
|
||||||
}
|
}
|
||||||
if(! cont)
|
if(! cont)
|
||||||
{
|
{
|
||||||
@@ -359,24 +355,20 @@ read(
|
|||||||
std::size_t total = 0;
|
std::size_t total = 0;
|
||||||
std::size_t max_size;
|
std::size_t max_size;
|
||||||
std::size_t max_prepare;
|
std::size_t max_prepare;
|
||||||
max_size = cond(ec, total, buffer);
|
for(;;)
|
||||||
max_prepare = std::min<std::size_t>(
|
|
||||||
std::max<std::size_t>(
|
|
||||||
512, buffer.capacity() - buffer.size()),
|
|
||||||
std::min<std::size_t>(
|
|
||||||
max_size, buffer.max_size() - buffer.size()));
|
|
||||||
while(max_prepare > 0)
|
|
||||||
{
|
{
|
||||||
std::size_t const bytes_transferred =
|
|
||||||
stream.read_some(buffer.prepare(max_prepare), ec);
|
|
||||||
buffer.commit(bytes_transferred);
|
|
||||||
total += bytes_transferred;
|
|
||||||
max_size = cond(ec, total, buffer);
|
max_size = cond(ec, total, buffer);
|
||||||
max_prepare = std::min<std::size_t>(
|
max_prepare = std::min<std::size_t>(
|
||||||
std::max<std::size_t>(
|
std::max<std::size_t>(
|
||||||
512, buffer.capacity() - buffer.size()),
|
512, buffer.capacity() - buffer.size()),
|
||||||
std::min<std::size_t>(
|
std::min<std::size_t>(
|
||||||
max_size, buffer.max_size() - buffer.size()));
|
max_size, buffer.max_size() - buffer.size()));
|
||||||
|
if(max_prepare == 0)
|
||||||
|
break;
|
||||||
|
std::size_t const bytes_transferred =
|
||||||
|
stream.read_some(buffer.prepare(max_prepare), ec);
|
||||||
|
buffer.commit(bytes_transferred);
|
||||||
|
total += bytes_transferred;
|
||||||
}
|
}
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user