#ifndef PROF_SIGNAL_HPP
#define PROF_SIGNAL_HPP

#include <csignal>

extern "C" {
  typedef void (*SigHandler)(int,siginfo_t*,void*);
}

namespace prof {

  class ProfSignal
  {
  public:
    static ProfSignal* instance();

    void start(SigHandler,unsigned long period_in_ms);
    void stop();
    void restart();
    void resetHandler();

  private:
    ProfSignal();
    ~ProfSignal();

    bool running_;
    SigHandler old_one_;
    SigHandler new_one_;
    struct sigaction acts_;
    sigset_t sigmask_;
  };

}
#endif
