Kylin/Universal/IoContext.cpp

29 lines
885 B
C++
Raw Normal View History

2023-07-21 11:21:16 +08:00
#include "IoContext.h"
#include <boost/asio/executor_work_guard.hpp>
#include <boost/scope_exit.hpp>
IoContext::~IoContext() {
m_ioContext->stop();
if (m_thread.joinable()) m_thread.join();
}
void IoContext::runIoContext() {
LOG(info) << "asio context started ...";
BOOST_SCOPE_EXIT(void) {
LOG(info) << "asio context exited ...";
}
BOOST_SCOPE_EXIT_END
try {
boost::asio::executor_work_guard<boost::asio::io_context::executor_type> work(m_ioContext->get_executor());
m_ioContext->run();
} catch (const boost::log::system_error &error) {
LOG(error) << error.what();
} catch (const std::out_of_range &e) {
LOG(error) << e.what();
} catch (const boost::exception &e) {
LOG(error) << boost::diagnostic_information(e);
} catch (const std::exception &e) {
LOG(error) << e.what();
}
}