Signal manager thread role (#4565)

This commit is contained in:
Piotr Wójcik 2024-04-15 14:27:19 +02:00 committed by GitHub
commit 2897be497e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 10 additions and 4 deletions

View file

@ -1,4 +1,5 @@
#include <nano/lib/signal_manager.hpp>
#include <nano/lib/thread_roles.hpp>
#include <nano/lib/utility.hpp>
#include <boost/asio.hpp>
@ -10,7 +11,8 @@
nano::signal_manager::signal_manager () :
work (boost::asio::make_work_guard (ioc))
{
smthread = boost::thread ([&ioc = ioc] () {
thread = std::thread ([&ioc = ioc] () {
nano::thread_role::set (nano::thread_role::name::signal_manager);
ioc.run ();
});
}
@ -21,7 +23,7 @@ nano::signal_manager::~signal_manager ()
/// io_context::run() function will exit once all other work has completed.
work.reset ();
ioc.stop ();
smthread.join ();
thread.join ();
}
nano::signal_manager::signal_descriptor::signal_descriptor (std::shared_ptr<boost::asio::signal_set> sigset_a, signal_manager & sigman_a, std::function<void (int)> handler_func_a, bool repeat_a) :

View file

@ -4,11 +4,11 @@
#include <boost/asio.hpp>
#include <boost/system/error_code.hpp>
#include <boost/thread.hpp>
#include <iostream>
#include <memory>
#include <string>
#include <thread>
#include <vector>
namespace nano
@ -73,7 +73,7 @@ private:
std::vector<signal_descriptor> descriptor_list;
/** thread to service the signal manager io context */
boost::thread smthread;
std::thread thread;
};
}

View file

@ -125,6 +125,9 @@ std::string nano::thread_role::get_string (nano::thread_role::name role)
case nano::thread_role::name::network_reachout:
thread_role_name_string = "Net reachout";
break;
case nano::thread_role::name::signal_manager:
thread_role_name_string = "Signal manager";
break;
default:
debug_assert (false && "nano::thread_role::get_string unhandled thread role");
}

View file

@ -48,6 +48,7 @@ enum class name
network_cleanup,
network_keepalive,
network_reachout,
signal_manager,
};
std::string_view to_string (name);