У меня есть boost::asio::ssl::stream, который используется для чтения и записи данных через безопасное соединение.
В какой-то момент мне нужно уничтожить объект boost::asio::ssl::stream. Должен ли я отменить активные асинхронные операции перед вызовом async_shutdown? Другими словами, какой из следующих вариантов правильный?
void close()
{
// m_stream stream is boost::asio::ssl::stream
boost::system::error_code ec;
m_stream.next_layer().cancel(ec);
if (ec)
{
return;
}
m_stream.async_shutdown([this](const boost::system::error_code& ec)
{
if (ec)
{
return;
}
boost::system::error_code ignored_ec;
m_stream.lowest_layer().close(ignored_ec);
});
}
Или
void close()
{
m_stream.async_shutdown([this](const boost::system::error_code& ec)
{
if (ec)
{
return;
}
boost::system::error_code ignored_ec;
m_stream.lowest_layer().close(ignored_ec);
});
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... ssl-stream