Return the signal_set when setting signal handler
This commit is contained in:
parent
bd3036df8a
commit
635cbc24e7
2 changed files with 17 additions and 13 deletions
|
|
@ -1,8 +1,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <boost/asio/signal_set.hpp>
|
||||||
|
|
||||||
namespace fc
|
namespace fc
|
||||||
{
|
{
|
||||||
/// handler will be called from ASIO thread
|
/// Set a handler to process an IPC (inter process communication) signal.
|
||||||
void set_signal_handler( std::function<void(int)> handler, int signal_num );
|
/// Handler will be called from ASIO thread.
|
||||||
|
/// @return shared pointer to the signal_set that holds the handler
|
||||||
|
std::shared_ptr<boost::asio::signal_set> set_signal_handler( std::function<void(int)> handler, int signal_num );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,16 @@
|
||||||
|
|
||||||
namespace fc
|
namespace fc
|
||||||
{
|
{
|
||||||
void set_signal_handler( std::function<void(int)> handler, int signal_num )
|
std::shared_ptr<boost::asio::signal_set> set_signal_handler( std::function<void(int)> handler, int signal_num )
|
||||||
{
|
{
|
||||||
std::shared_ptr<boost::asio::signal_set> sig_set(new boost::asio::signal_set(fc::asio::default_io_service(), signal_num));
|
std::shared_ptr<boost::asio::signal_set> sig_set( new boost::asio::signal_set( fc::asio::default_io_service(),
|
||||||
sig_set->async_wait(
|
signal_num) );
|
||||||
[sig_set,handler]( const boost::system::error_code& err, int num )
|
sig_set->async_wait( [sig_set,handler]( const boost::system::error_code& err, int num )
|
||||||
{
|
{
|
||||||
handler( num );
|
if( err != boost::asio::error::operation_aborted )
|
||||||
sig_set->cancel();
|
handler( num );
|
||||||
// set_signal_handler( handler, signal_num );
|
sig_set->cancel();
|
||||||
} );
|
} );
|
||||||
}
|
return sig_set;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue