8 #ifndef SCARAB_SIGNAL_HANDLER_HH_ 9 #define SCARAB_SIGNAL_HANDLER_HH_ 77 void add_cancelable( std::shared_ptr< cancelable > a_cancelable );
79 void remove_cancelable( std::shared_ptr< cancelable > a_cancelable );
81 void remove_cancelable(
cancelable* a_cancelable );
87 static void add_cancelable_s( std::shared_ptr< cancelable > a_cancelable );
89 static void remove_cancelable_s( std::shared_ptr< cancelable > a_cancelable );
91 static void remove_cancelable_s(
cancelable* a_cancelable );
94 [[noreturn]]
static void handle_terminate() noexcept;
97 static void handle_exit_error(
int a_sig );
100 static void handle_exit_success(
int a_sig );
103 [[noreturn]]
static void terminate(
int a_code ) noexcept;
106 static void exit(
int a_code );
109 static void print_current_exception(
bool a_use_logging );
112 static void print_stack_trace(
bool a_use_logging );
115 static void cancel_all(
int a_code );
123 typedef std::map< cancelable*, cancelable_wptr_t >
cancelers;
std::weak_ptr< cancelable > cancelable_wptr_t
#define mv_accessible_static_noset
cancelers::iterator cancelers_it_t
static cancelers s_cancelers
cancelers::const_iterator cancelers_cit_t
std::map< cancelable *, cancelable_wptr_t > cancelers
Deals with cleanly exiting an application, and includes signal and std::terminate handler functions...
#define mv_accessible_static
static std::recursive_mutex s_mutex
Base class for a cancelable object (i.e. an object that can be canceled by scarab::signal_handler or ...