forked from boostorg/beast
Tune up static_buffer (API Change):
The static buffer is updated: * reset() is no longer a member. Use b.consume(b.size()) instead. * Simplified implementaton, uses asio instead of custom types * Better stream performance: consuming the input makes room available in the output. This class is now suitable for HTTP reads. These changes permit the static_buffer wrapper to adapt a user memory buffer if desired, including a stack based array. The static_buffer_n class may also be used for this purpose, it comes with its own storage.
This commit is contained in:
@@ -440,7 +440,7 @@ operator()(error_code ec,
|
||||
{
|
||||
ping_data payload;
|
||||
detail::read(payload, d.fb.data());
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
if(d.ws.ping_cb_)
|
||||
d.ws.ping_cb_(false, payload);
|
||||
if(d.ws.wr_close_)
|
||||
@@ -469,7 +469,7 @@ operator()(error_code ec,
|
||||
detail::read(payload, d.fb.data());
|
||||
if(d.ws.ping_cb_)
|
||||
d.ws.ping_cb_(true, payload);
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
d.state = do_read_fh;
|
||||
break;
|
||||
}
|
||||
@@ -488,7 +488,7 @@ operator()(error_code ec,
|
||||
if(cr.code == close_code::none)
|
||||
cr.code = close_code::normal;
|
||||
cr.reason = "";
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
d.ws.template write_close<
|
||||
static_buffer>(d.fb, cr);
|
||||
if(d.ws.wr_block_)
|
||||
@@ -535,7 +535,7 @@ operator()(error_code ec,
|
||||
BOOST_ASSERT(d.ws.wr_block_ == &d);
|
||||
d.ws.wr_block_ = nullptr;
|
||||
}
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
d.state = do_read_fh;
|
||||
break;
|
||||
}
|
||||
@@ -550,7 +550,7 @@ operator()(error_code ec,
|
||||
return;
|
||||
|
||||
case do_pong + 1:
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
d.state = do_read_fh;
|
||||
d.ws.wr_block_ = nullptr;
|
||||
break;
|
||||
@@ -621,7 +621,7 @@ operator()(error_code ec,
|
||||
d.state = do_fail + 4;
|
||||
break;
|
||||
}
|
||||
d.fb.reset();
|
||||
d.fb.consume(d.fb.size());
|
||||
d.ws.template write_close<
|
||||
static_buffer>(d.fb, code);
|
||||
if(d.ws.wr_block_)
|
||||
@@ -793,7 +793,7 @@ read_frame(frame_info& fi, DynamicBuffer& dynabuf, error_code& ec)
|
||||
{
|
||||
ping_data payload;
|
||||
detail::read(payload, fb.data());
|
||||
fb.reset();
|
||||
fb.consume(fb.size());
|
||||
if(ping_cb_)
|
||||
ping_cb_(false, payload);
|
||||
write_ping<static_buffer>(
|
||||
@@ -823,7 +823,7 @@ read_frame(frame_info& fi, DynamicBuffer& dynabuf, error_code& ec)
|
||||
if(cr.code == close_code::none)
|
||||
cr.code = close_code::normal;
|
||||
cr.reason = "";
|
||||
fb.reset();
|
||||
fb.consume(fb.size());
|
||||
wr_close_ = true;
|
||||
write_close<static_buffer>(fb, cr);
|
||||
boost::asio::write(stream_, fb.data(), ec);
|
||||
|
||||
@@ -279,7 +279,7 @@ operator()(error_code ec,
|
||||
case do_nomask_frag + 2:
|
||||
d.cb.consume(
|
||||
bytes_transferred - d.fh_buf.size());
|
||||
d.fh_buf.reset();
|
||||
d.fh_buf.consume(d.fh_buf.size());
|
||||
d.fh.op = opcode::cont;
|
||||
if(d.ws.wr_block_ == &d)
|
||||
d.ws.wr_block_ = nullptr;
|
||||
@@ -384,7 +384,7 @@ operator()(error_code ec,
|
||||
case do_mask_frag + 2:
|
||||
d.cb.consume(
|
||||
bytes_transferred - d.fh_buf.size());
|
||||
d.fh_buf.reset();
|
||||
d.fh_buf.consume(d.fh_buf.size());
|
||||
d.fh.op = opcode::cont;
|
||||
BOOST_ASSERT(d.ws.wr_block_ == &d);
|
||||
d.ws.wr_block_ = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user