timers_poll(int max_num=128)
{
active = 1;
epfd = epoll_create(max_num);
}
int timers_poll_add_timer(timer &ptimer);
int timers_poll_del_timer(timer &ptimer);
int run();
int timers_poll_deactive()
{
active = 0;
}
~ timers_poll()
{
}
private:
int epfd;
int active;
std::map<int, timer> timers_map;
/* data */
} ;
#endif /* TIMER_POLL_H */
timer_poll.cpp
/*
* File: timer_poll.cpp
* Author: Administrator
*/
#include <cstdlib>
#include "timer_poll.h"
using namespace std;
timer::timer(const timer& ptimer)
{
timer_internal = ptimer.timer_internal;
cb = ptimer.cb;
timer_id = ptimer.timer_id;
repeat = ptimer.repeat;
userdata = ptimer.userdata;
}
timer & timer::operator =(const timer& ptimer)
{
if (this == &ptimer)
{
return *this;
}
timer_internal = ptimer.timer_internal;
cb = ptimer.cb;
timer_id = ptimer.timer_id;
repeat = ptimer.repeat;
userdata = ptimer.userdata;
return *this;
}
int timer::timer_start()
{
struct itimerspec ptime_internal = {0};
ptime_internal.it_value.tv_sec = (int) timer_internal;
ptime_internal.it_value.tv_nsec = (timer_internal - (int) timer_internal)*1000000;
if(repeat)
{
ptime_internal.it_interval.tv_sec = ptime_internal.it_value.tv_sec;
ptime_internal.it_interval.tv_nsec = ptime_internal.it_value.tv_nsec;
}
timerfd_settime(timer_id, 0, &ptime_internal, NULL);
return 0;
}
int timer::timer_stop()
{
close(timer_id);
return 0;
}
int timer::timer_modify_internal(double timer_internal)
{
this->timer_internal = timer_internal;
timer_start();
}
int timers_poll::timers_poll_add_timer(timer& ptimer)
{
int timer_id = ptimer.timer_get_id();
struct epoll_event ev;
ev.data.fd = timer_id;










