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