#include <signal.h>
#include <sys/time.h>
#include <pthread.h>
-#include "Utils/Exception.hh"
+#include "../Utils/Exception.hh"
//#include "ClockService.mpp"
#define prefix_
action.sa_flags = SA_RESTART;
CheckError( sigaction, (SIGALRM, &action, restart ? 0 : &impl_->oldaction) );
+ restartTimer(restart);
+
+ impl_->unblock();
+}
+
+prefix_ void senf::ClockService::restartTimer(bool restart)
+{
struct itimerval itimer;
itimer.it_interval.tv_sec = CheckInterval;
itimer.it_interval.tv_usec = 0;
itimer.it_value.tv_sec = CheckInterval;
itimer.it_value.tv_usec = 0;
CheckError( setitimer, (ITIMER_REAL, &itimer, restart ? 0 : &impl_->olditimer) );
-
- impl_->unblock();
}
prefix_ void senf::ClockService::updateSkew(boost::posix_time::ptime time)
+ boost::posix_time::seconds(CheckInterval)
- boost::posix_time::seconds(itimer.it_value.tv_sec)
- boost::posix_time::microseconds(itimer.it_value.tv_usec)));
+ heartbeat_ = time;
+ restartTimer();
}
}