*NEXT/*DIE
This commit is contained in:
1 parent
48be555724
commit
9a39b6224c
14 files changed
+352
-209
No files matched your search
@@ -1,16 +1,20 @@
|
||||
#include "Timer.h"
|
||||
|
||||
namespace core {
|
||||
namespace core
|
||||
{
|
||||
|
||||
Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll, "Timer") {
|
||||
Timer::Timer(EPoll &ePoll, double delay = 0.0f) : Socket(ePoll, "Timer")
|
||||
{
|
||||
setDescriptor(timerfd_create(CLOCK_REALTIME, 0));
|
||||
setTimer(delay);
|
||||
}
|
||||
|
||||
Timer::~Timer() {
|
||||
Timer::~Timer()
|
||||
{
|
||||
}
|
||||
|
||||
void Timer::setTimer(double delay) {
|
||||
void Timer::setTimer(double delay)
|
||||
{
|
||||
|
||||
double integer;
|
||||
double fraction;
|
||||
@@ -27,10 +31,10 @@ namespace core {
|
||||
timer.it_value.tv_nsec = (int)(fraction * 1000000000);
|
||||
|
||||
timerfd_settime(getDescriptor(), 0, &timer, NULL);
|
||||
|
||||
}
|
||||
|
||||
void Timer::clearTimer() {
|
||||
void Timer::clearTimer()
|
||||
{
|
||||
|
||||
struct itimerspec timer;
|
||||
|
||||
@@ -42,19 +46,22 @@ namespace core {
|
||||
timerfd_settime(getDescriptor(), 0, &timer, NULL);
|
||||
}
|
||||
|
||||
double Timer::getElapsed() {
|
||||
double Timer::getElapsed()
|
||||
{
|
||||
struct itimerspec timer;
|
||||
timerfd_gettime(getDescriptor(), &timer);
|
||||
double toTimeout = (double)((timer.it_value.tv_sec * 1000000000L) + timer.it_value.tv_nsec) / 1000000000L;
|
||||
return delayValue - toTimeout;
|
||||
}
|
||||
|
||||
void Timer::onDataReceived(std::string data) {
|
||||
void Timer::onDataReceived(std::string data)
|
||||
{
|
||||
onTimeout();
|
||||
}
|
||||
|
||||
double Timer::getEpoch() {
|
||||
return (double)std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch()).count() /1000000000L;
|
||||
double Timer::getEpoch()
|
||||
{
|
||||
return (double)std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch()).count() / 1000000000L;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user