@@ -84,12 +84,15 @@ metric::metric::~metric()
8484 if (!m_enabled)
8585 return ;
8686
87- m_writeService. post ([&] {
87+ boost::asio:: post (m_writeContext, [&] {
8888 m_sendTimer->cancel ();
8989 });
9090
91- m_queueServiceWork.reset ();
92- m_writeServiceWork.reset ();
91+ m_queueContextWork.get ()->reset ();
92+ m_writeContextWork.get ()->reset ();
93+
94+ m_queueContextWork.reset ();
95+ m_writeContextWork.reset ();
9396
9497 m_queueServiceThread.join ();
9598 m_writeServiceThread.join ();
@@ -108,17 +111,17 @@ void metric::metric::initialize()
108111 sConfig .GetStringDefault (" Metric.Password" , " " )
109112 };
110113
111- m_sendTimer.reset (new boost::asio::deadline_timer (m_writeService ));
112- m_queueServiceWork. reset ( new boost::asio::io_service::work (m_queueService ));
113- m_writeServiceWork. reset ( new boost::asio::io_service::work (m_writeService ));
114+ m_sendTimer.reset (new boost::asio::deadline_timer (m_writeContext ));
115+ m_queueContextWork = std::make_unique< boost::asio::executor_work_guard<boost::asio::io_context::executor_type>>( boost::asio::make_work_guard (m_queueContext ));
116+ m_writeContextWork = std::make_unique< boost::asio::executor_work_guard<boost::asio::io_context::executor_type>>( boost::asio::make_work_guard (m_writeContext ));
114117
115118 // Start up service thread that will process all queued tasks
116119 m_queueServiceThread = std::thread ([&] {
117- m_queueService .run ();
120+ m_queueContext .run ();
118121 });
119122
120123 m_writeServiceThread = std::thread ([&] {
121- m_writeService .run ();
124+ m_writeContext .run ();
122125 });
123126
124127 schedule_timer ();
@@ -137,8 +140,7 @@ void metric::metric::reload_config()
137140 initialize ();
138141 return ;
139142 }
140-
141- m_writeService.post ([&]
143+ boost::asio::post (m_writeContext, [&]
142144 {
143145 m_connectionInfo = {
144146 sConfig .GetStringDefault (" Metric.Address" , " 127.0.0.1" ),
@@ -160,7 +162,7 @@ void metric::metric::report(std::string measurement, std::map<std::string, boost
160162 if (!m_enabled)
161163 return ;
162164
163- m_queueService. post ([&, measurement, fields, tags]
165+ boost::asio:: post (m_queueContext, [&, measurement, fields, tags]
164166 {
165167 std::lock_guard<std::mutex> guard (m_queueWriteLock);
166168 m_measurementQueue.push_back (std::make_unique<Measurement>(measurement, tags, fields));
@@ -209,9 +211,9 @@ void metric::metric::send()
209211 boost::system::error_code error;
210212
211213 // Hostname resolution
212- tcp::resolver resolver (m_writeService );
213- tcp::resolver::query query (m_connectionInfo.hostname , std::to_string (m_connectionInfo.port ));
214- tcp::resolver::iterator endpoint_iterator = resolver. resolve (query, error );
214+ tcp::resolver resolver (m_writeContext );
215+ auto endpoints = resolver. resolve (m_connectionInfo.hostname , std::to_string (m_connectionInfo.port ), error );
216+ auto endpoint_iterator = endpoints. begin ( );
215217
216218 if (error)
217219 {
@@ -221,9 +223,9 @@ void metric::metric::send()
221223
222224 error = boost::asio::error::host_not_found;
223225
224- tcp::resolver::iterator end;
226+ auto end = endpoints. end () ;
225227
226- tcp::socket socket (m_writeService );
228+ tcp::socket socket (m_writeContext );
227229 while (error && endpoint_iterator != end)
228230 {
229231 socket.close ();
0 commit comments