Как получить «io_context» из «basic_socket» в boost 1.71? - PullRequest
2 голосов
/ 15 октября 2019

Я использую boost :: asio, версия boost 1.71. Изначально у меня есть объект ip :: tcp :: socket, назовите его «socket». Мне нужно получить io_context, используемый этим сокетом.

В ранних версиях Boost (1.62, например) это было просто. Был метод asio :: basic_socket :: get_io_service (). Но как я могу сделать это в Boost 1.71?

Эта необходимость появилась, так как у меня есть проект, который интенсивно использует boost1.62 и повсеместно используется "asio :: basic_socket :: get_io_service ()".

Я пытался:

// сокет socket
asio::executor e = socket.get_executor();
asio::execution_context &e_context = e.context();
asio::io_context &context_instance = static_cast<asio::io_context&>(e_context);

Но это выглядит опасно и неправильно. Хотя он успешно работает.

...