diff --git a/io_context/include/io_context/io_context.hpp b/io_context/include/io_context/io_context.hpp index d2f57707..340b6847 100644 --- a/io_context/include/io_context/io_context.hpp +++ b/io_context/include/io_context/io_context.hpp @@ -66,7 +66,7 @@ class IoContext IoContext(const IoContext &) = delete; IoContext & operator=(const IoContext &) = delete; - asio::io_service & ios() const; + asio::io_context & ios() const; bool isServiceStopped(); uint32_t serviceThreadCount(); @@ -76,12 +76,12 @@ class IoContext template void post(F f) { - ios().post(f); + asio::post(ios(), f); } private: - std::shared_ptr m_ios; - std::shared_ptr m_work; + std::shared_ptr m_ios; + std::shared_ptr> m_work; std::shared_ptr m_ios_thread_workers; }; diff --git a/io_context/src/io_context.cpp b/io_context/src/io_context.cpp index 3ac151e9..30287210 100644 --- a/io_context/src/io_context.cpp +++ b/io_context/src/io_context.cpp @@ -30,8 +30,8 @@ IoContext::IoContext() : IoContext(std::thread::hardware_concurrency()) {} IoContext::IoContext(size_t threads_count) -: m_ios(new asio::io_service()), - m_work(new asio::io_service::work(ios())), +: m_ios(new asio::io_context()), + m_work(new asio::executor_work_guard(ios().get_executor())), m_ios_thread_workers(new drivers::common::thread_group()) { for (size_t i = 0; i < threads_count; ++i) { @@ -51,7 +51,7 @@ IoContext::~IoContext() waitForExit(); } -asio::io_service & IoContext::ios() const +asio::io_context & IoContext::ios() const { return *m_ios; } @@ -69,7 +69,7 @@ uint32_t IoContext::serviceThreadCount() void IoContext::waitForExit() { if (!ios().stopped()) { - ios().post([&]() {m_work.reset();}); + asio::post(ios(), [&]() {m_work.reset();}); } ios().stop();