mirror of
https://github.com/boostorg/beast.git
synced 2025-07-29 20:37:31 +02:00
Use read buffer instead of buffered stream
This commit is contained in:
@ -11,6 +11,7 @@ WebSocket:
|
||||
|
||||
* Tidy up websocket javadocs
|
||||
* Refactor accept, handshake ops
|
||||
* Use read buffer instead of buffered stream
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
@ -119,11 +119,11 @@ operator()(Buffers const& buffers)
|
||||
auto& d = *d_;
|
||||
error_code ec;
|
||||
boost::optional<typename
|
||||
flat_buffer::mutable_buffers_type> mb;
|
||||
static_buffer_base::mutable_buffers_type> mb;
|
||||
auto const len = buffer_size(buffers);
|
||||
try
|
||||
{
|
||||
mb.emplace(d.ws.stream_.buffer().prepare(len));
|
||||
mb.emplace(d.ws.rd_.buf.prepare(len));
|
||||
}
|
||||
catch(std::length_error const&)
|
||||
{
|
||||
@ -132,7 +132,7 @@ operator()(Buffers const& buffers)
|
||||
return d.ws.get_io_service().post(
|
||||
bind_handler(std::move(*this), ec));
|
||||
}
|
||||
d.ws.stream_.buffer().commit(
|
||||
d.ws.rd_.buf.commit(
|
||||
buffer_copy(*mb, buffers));
|
||||
(*this)(ec);
|
||||
}
|
||||
@ -263,11 +263,11 @@ operator()(Buffers const& buffers)
|
||||
auto& d = *d_;
|
||||
error_code ec;
|
||||
boost::optional<typename
|
||||
flat_buffer::mutable_buffers_type> mb;
|
||||
static_buffer_base::mutable_buffers_type> mb;
|
||||
auto const len = buffer_size(buffers);
|
||||
try
|
||||
{
|
||||
mb.emplace(d.ws.stream_.buffer().prepare(len));
|
||||
mb.emplace(d.ws.rd_.buf.prepare(len));
|
||||
}
|
||||
catch(std::length_error const&)
|
||||
{
|
||||
@ -276,7 +276,7 @@ operator()(Buffers const& buffers)
|
||||
return d.ws.get_io_service().post(
|
||||
bind_handler(std::move(*this), ec));
|
||||
}
|
||||
d.ws.stream_.buffer().commit(
|
||||
d.ws.rd_.buf.commit(
|
||||
buffer_copy(*mb, buffers));
|
||||
(*this)(ec);
|
||||
}
|
||||
@ -294,7 +294,7 @@ operator()(error_code ec)
|
||||
case 0:
|
||||
d.step = 1;
|
||||
return http::async_read(
|
||||
d.ws.next_layer(), d.ws.stream_.buffer(),
|
||||
d.ws.next_layer(), d.ws.rd_.buf,
|
||||
d.p, std::move(*this));
|
||||
|
||||
case 1:
|
||||
@ -437,8 +437,8 @@ accept(ConstBufferSequence const& buffers, error_code& ec)
|
||||
reset();
|
||||
using boost::asio::buffer_copy;
|
||||
using boost::asio::buffer_size;
|
||||
stream_.buffer().commit(buffer_copy(
|
||||
stream_.buffer().prepare(
|
||||
rd_.buf.commit(buffer_copy(
|
||||
rd_.buf.prepare(
|
||||
buffer_size(buffers)), buffers));
|
||||
do_accept(&default_decorate_res, ec);
|
||||
}
|
||||
@ -463,8 +463,8 @@ accept_ex(ConstBufferSequence const& buffers,
|
||||
reset();
|
||||
using boost::asio::buffer_copy;
|
||||
using boost::asio::buffer_size;
|
||||
stream_.buffer().commit(buffer_copy(
|
||||
stream_.buffer().prepare(
|
||||
rd_.buf.commit(buffer_copy(
|
||||
rd_.buf.prepare(
|
||||
buffer_size(buffers)), buffers));
|
||||
do_accept(decorator, ec);
|
||||
}
|
||||
@ -597,8 +597,8 @@ accept(http::request<Body,
|
||||
reset();
|
||||
using boost::asio::buffer_copy;
|
||||
using boost::asio::buffer_size;
|
||||
stream_.buffer().commit(buffer_copy(
|
||||
stream_.buffer().prepare(
|
||||
rd_.buf.commit(buffer_copy(
|
||||
rd_.buf.prepare(
|
||||
buffer_size(buffers)), buffers));
|
||||
do_accept(req, &default_decorate_res, ec);
|
||||
}
|
||||
@ -625,8 +625,8 @@ accept_ex(http::request<Body,
|
||||
reset();
|
||||
using boost::asio::buffer_copy;
|
||||
using boost::asio::buffer_size;
|
||||
stream_.buffer().commit(buffer_copy(
|
||||
stream_.buffer().prepare(
|
||||
rd_.buf.commit(buffer_copy(
|
||||
rd_.buf.prepare(
|
||||
buffer_size(buffers)), buffers));
|
||||
do_accept(req, decorator, ec);
|
||||
}
|
||||
@ -878,7 +878,7 @@ do_accept(
|
||||
{
|
||||
http::request_parser<http::empty_body> p;
|
||||
http::read(next_layer(),
|
||||
stream_.buffer(), p, ec);
|
||||
rd_.buf, p, ec);
|
||||
if(ec)
|
||||
return;
|
||||
do_accept(p.get(), decorator, ec);
|
||||
|
@ -148,7 +148,7 @@ operator()(error_code ec, bool again)
|
||||
// read http response
|
||||
d.state = 2;
|
||||
http::async_read(d.ws.next_layer(),
|
||||
d.ws.stream_.buffer(), d.res,
|
||||
d.ws.rd_.buf, d.res,
|
||||
std::move(*this));
|
||||
return;
|
||||
|
||||
@ -413,7 +413,7 @@ do_handshake(
|
||||
}
|
||||
if(ec)
|
||||
return;
|
||||
http::read(next_layer(), stream_.buffer(), res, ec);
|
||||
http::read(next_layer(), rd_.buf, res, ec);
|
||||
if(ec)
|
||||
return;
|
||||
do_response(res, key, ec);
|
||||
@ -421,8 +421,6 @@ do_handshake(
|
||||
*res_p = std::move(res);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
} // websocket
|
||||
} // beast
|
||||
} // boost
|
||||
|
@ -140,7 +140,8 @@ open(role_type role)
|
||||
rd_.remain = 0;
|
||||
rd_.cont = false;
|
||||
rd_.done = true;
|
||||
rd_.buf.consume(rd_.buf.size());
|
||||
// Can't clear this because accept uses it
|
||||
//rd_.buf.consume(rd_.buf.size());
|
||||
rd_.fh.fin = false;
|
||||
rd_close_ = false;
|
||||
wr_close_ = false;
|
||||
@ -204,9 +205,6 @@ reset()
|
||||
wr_.cont = false;
|
||||
wr_block_.reset();
|
||||
ping_data_ = nullptr; // should be nullptr on close anyway
|
||||
|
||||
stream_.buffer().consume(
|
||||
stream_.buffer().size());
|
||||
}
|
||||
|
||||
// Called before each write frame
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user