forked from boostorg/beast
control_callback replaces ping_callback (API Change):
fix #322 The new callback is informed of all frame types including close. Actions Required: * Change calls to websocket::stream::ping_callback to use websocket::stream::control_callback * Change user defined ping callbacks to have the new signature and adjust the callback definition appropriately.
This commit is contained in:
1 parent
44824a4166
commit
e7b01dc5c4
7 files changed
+110
-60
No files matched your search
@@ -437,8 +437,9 @@ operator()(error_code ec,
|
||||
ping_data payload;
|
||||
detail::read(payload, d.fb.data());
|
||||
d.fb.consume(d.fb.size());
|
||||
if(d.ws.ping_cb_)
|
||||
d.ws.ping_cb_(false, payload);
|
||||
if(d.ws.ctrl_cb_)
|
||||
d.ws.ctrl_cb_(
|
||||
frame_type::ping, payload);
|
||||
if(d.ws.wr_close_)
|
||||
{
|
||||
// ignore ping when closing
|
||||
@@ -463,8 +464,9 @@ operator()(error_code ec,
|
||||
code = close_code::none;
|
||||
ping_data payload;
|
||||
detail::read(payload, d.fb.data());
|
||||
if(d.ws.ping_cb_)
|
||||
d.ws.ping_cb_(true, payload);
|
||||
if(d.ws.ctrl_cb_)
|
||||
d.ws.ctrl_cb_(
|
||||
frame_type::pong, payload);
|
||||
d.fb.consume(d.fb.size());
|
||||
d.state = do_read_fh;
|
||||
break;
|
||||
@@ -478,6 +480,9 @@ operator()(error_code ec,
|
||||
d.state = do_fail;
|
||||
break;
|
||||
}
|
||||
if(d.ws.ctrl_cb_)
|
||||
d.ws.ctrl_cb_(frame_type::close,
|
||||
d.ws.cr_.reason);
|
||||
if(! d.ws.wr_close_)
|
||||
{
|
||||
auto cr = d.ws.cr_;
|
||||
@@ -791,8 +796,8 @@ read_frame(DynamicBuffer& dynabuf, error_code& ec)
|
||||
ping_data payload;
|
||||
detail::read(payload, fb.data());
|
||||
fb.consume(fb.size());
|
||||
if(ping_cb_)
|
||||
ping_cb_(false, payload);
|
||||
if(ctrl_cb_)
|
||||
ctrl_cb_(frame_type::ping, payload);
|
||||
write_ping<static_buffer>(fb,
|
||||
detail::opcode::pong, payload);
|
||||
boost::asio::write(stream_, fb.data(), ec);
|
||||
@@ -805,8 +810,8 @@ read_frame(DynamicBuffer& dynabuf, error_code& ec)
|
||||
{
|
||||
ping_data payload;
|
||||
detail::read(payload, fb.data());
|
||||
if(ping_cb_)
|
||||
ping_cb_(true, payload);
|
||||
if(ctrl_cb_)
|
||||
ctrl_cb_(frame_type::pong, payload);
|
||||
continue;
|
||||
}
|
||||
BOOST_ASSERT(fh.op == detail::opcode::close);
|
||||
@@ -814,6 +819,8 @@ read_frame(DynamicBuffer& dynabuf, error_code& ec)
|
||||
detail::read(cr_, fb.data(), code);
|
||||
if(code != close_code::none)
|
||||
goto do_close;
|
||||
if(ctrl_cb_)
|
||||
ctrl_cb_(frame_type::close, cr_.reason);
|
||||
if(! wr_close_)
|
||||
{
|
||||
auto cr = cr_;
|
||||
|
||||
Reference in new issue
Block a user