/* * SignalHandler.hpp * * Created on: 01.06.2012 * Author: heber */ #ifndef SIGNALHANDLER_HPP_ #define SIGNALHANDLER_HPP_ // include config.h #ifdef HAVE_CONFIG_H #include #endif #include #include struct SignalHandler { /** Constructor for class SignalHandler. * * \param _shutdownfunction function to call when signal has been received. * \param _signals vector of all signals to catch */ SignalHandler(boost::function &_shutdownfunction, std::vector &_signals); /** Destructor for class SignalHandler. * */ ~SignalHandler(); private: /** Obtains all signals in \a signals. * */ void obtainAllHooks(); /** Releases all signal hooks. * */ void releaseAllHooks(); /** Internal signal handler for a \a sig * * \param sig signal to catch */ void operator()(int sig); private: //!> shutdown function to call on signal boost::function shutdownfunction; //!> signal vector for later releasing std::vector signals; //!> counter for the number of received signals size_t NoSignalsReceived; //!> maximum number of received signals after which the handlers are released const size_t MAX_NOSIGNALSRECEIVED; //!> grant global function signalhandler access to private signalhandler function friend void signalhandler(int sig); //!> static function to be called by global function signalhandler static boost::function signalhandler_fct; }; #endif /* SIGNALHANDLER_HPP_ */