forked from boostorg/beast
websocket read returns the number of bytes inserted (API Change):
* read and async_read now return the number of bytes inserted into the caller's buffer. Actions Required: * Change the signature of completion handlers used with websocket::stream::async_read to void(error_code, std::size_t)
This commit is contained in:
1 parent
6e33072832
commit
e56d9955de
5 files changed
+69
-52
No files matched your search
@@ -804,7 +804,7 @@ operator()(
|
||||
|
||||
template<class NextLayer>
|
||||
template<class DynamicBuffer>
|
||||
void
|
||||
std::size_t
|
||||
stream<NextLayer>::
|
||||
read(DynamicBuffer& buffer)
|
||||
{
|
||||
@@ -813,14 +813,15 @@ read(DynamicBuffer& buffer)
|
||||
static_assert(beast::is_dynamic_buffer<DynamicBuffer>::value,
|
||||
"DynamicBuffer requirements not met");
|
||||
error_code ec;
|
||||
read(buffer, ec);
|
||||
auto const bytes_written = read(buffer, ec);
|
||||
if(ec)
|
||||
BOOST_THROW_EXCEPTION(system_error{ec});
|
||||
return bytes_written;
|
||||
}
|
||||
|
||||
template<class NextLayer>
|
||||
template<class DynamicBuffer>
|
||||
void
|
||||
std::size_t
|
||||
stream<NextLayer>::
|
||||
read(DynamicBuffer& buffer, error_code& ec)
|
||||
{
|
||||
@@ -828,18 +829,20 @@ read(DynamicBuffer& buffer, error_code& ec)
|
||||
"SyncStream requirements not met");
|
||||
static_assert(beast::is_dynamic_buffer<DynamicBuffer>::value,
|
||||
"DynamicBuffer requirements not met");
|
||||
std::size_t bytes_written = 0;
|
||||
do
|
||||
{
|
||||
read_some(buffer, 0, ec);
|
||||
bytes_written += read_some(buffer, 0, ec);
|
||||
if(ec)
|
||||
return;
|
||||
return bytes_written;
|
||||
}
|
||||
while(! is_message_done());
|
||||
return bytes_written;
|
||||
}
|
||||
|
||||
template<class NextLayer>
|
||||
template<class DynamicBuffer, class ReadHandler>
|
||||
async_return_type<ReadHandler, void(error_code)>
|
||||
async_return_type<ReadHandler, void(error_code, std::size_t)>
|
||||
stream<NextLayer>::
|
||||
async_read(DynamicBuffer& buffer, ReadHandler&& handler)
|
||||
{
|
||||
@@ -848,19 +851,15 @@ async_read(DynamicBuffer& buffer, ReadHandler&& handler)
|
||||
static_assert(beast::is_dynamic_buffer<DynamicBuffer>::value,
|
||||
"DynamicBuffer requirements not met");
|
||||
async_completion<
|
||||
ReadHandler, void(error_code)> init{handler};
|
||||
ReadHandler, void(error_code, std::size_t)> init{handler};
|
||||
read_op<
|
||||
DynamicBuffer,
|
||||
beast::detail::bound_handler<
|
||||
handler_type<ReadHandler, void(error_code)>,
|
||||
decltype(std::placeholders::_1) &> >{
|
||||
beast::bind_handler(
|
||||
handler_type<ReadHandler, void(error_code, std::size_t)> >{
|
||||
init.completion_handler,
|
||||
std::placeholders::_1),
|
||||
*this,
|
||||
buffer,
|
||||
0,
|
||||
false}();
|
||||
*this,
|
||||
buffer,
|
||||
0,
|
||||
false}();
|
||||
return init.result.get();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user