{
 }
 
+/**
+ * @brief Starts the pinging thread and returns immediately.
+ */
 bool PingScheduler::start_pinging_thread()
 {
     Thread = thread( &PingScheduler::start_pinging, this );
     return true;
 }
 
+/**
+ * @brief Waits for the pinging thread to finish.
+ */
 void PingScheduler::wait_pinging_thread()
 {
     BOOST_ASSERT( Thread.joinable() );
         return false;
     }
 
-    schedule_next_ping();
+    setup_next_ping();
 
+    // event processing loop, it is a blocking call!
     IoService.run();
 
     return true;
 }
 
+void PingScheduler::stop_pinging()
+{
+    IoService.stop();
+}
+
 bool PingScheduler::resolve_ping_address()
 {
     bool address_resolved = IpList.resolve();