mirror of
https://github.com/wangyu-/UDPspeeder.git
synced 2025-11-26 22:55:37 +08:00
client works
This commit is contained in:
@@ -18,16 +18,16 @@ delay_manager_t::delay_manager_t()
|
||||
{
|
||||
capacity=0;
|
||||
|
||||
if ((timer_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK)) < 0)
|
||||
{
|
||||
mylog(log_fatal,"timer_fd create error");
|
||||
myexit(1);
|
||||
}
|
||||
//if ((timer_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK)) < 0)
|
||||
//{
|
||||
// mylog(log_fatal,"timer_fd create error");
|
||||
// myexit(1);
|
||||
//}
|
||||
|
||||
itimerspec zero_its;
|
||||
memset(&zero_its, 0, sizeof(zero_its));
|
||||
//itimerspec zero_its;
|
||||
//memset(&zero_its, 0, sizeof(zero_its));
|
||||
|
||||
timerfd_settime(timer_fd, TFD_TIMER_ABSTIME, &zero_its, 0);
|
||||
//timerfd_settime(timer_fd, TFD_TIMER_ABSTIME, &zero_its, 0);
|
||||
|
||||
}
|
||||
delay_manager_t::~delay_manager_t()
|
||||
@@ -35,10 +35,12 @@ delay_manager_t::~delay_manager_t()
|
||||
//TODO ,we currently dont need to deconstruct it
|
||||
}
|
||||
|
||||
/*
|
||||
int delay_manager_t::get_timer_fd()
|
||||
{
|
||||
return timer_fd;
|
||||
}
|
||||
}*/
|
||||
|
||||
//int add(my_time_t delay,const dest_t &dest,const char *data,int len);
|
||||
int delay_manager_t::add(my_time_t delay,const dest_t &dest,char *data,int len)
|
||||
{
|
||||
@@ -78,6 +80,8 @@ int delay_manager_t::add(my_time_t delay,const dest_t &dest,char *data,int len)
|
||||
|
||||
delay_mp.insert(make_pair(tmp_time,tmp));
|
||||
|
||||
////check(); check everytime when add, is it better ??
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -112,11 +116,19 @@ int delay_manager_t::check()
|
||||
}
|
||||
if(!delay_mp.empty())
|
||||
{
|
||||
itimerspec its;
|
||||
memset(&its.it_interval,0,sizeof(its.it_interval));
|
||||
its.it_value.tv_sec=delay_mp.begin()->first/1000000llu;
|
||||
its.it_value.tv_nsec=(delay_mp.begin()->first%1000000llu)*1000llu;
|
||||
timerfd_settime(timer_fd,TFD_TIMER_ABSTIME,&its,0);
|
||||
//itimerspec its;
|
||||
//memset(&its.it_interval,0,sizeof(its.it_interval));
|
||||
//its.it_value.tv_sec=delay_mp.begin()->first/1000000llu;
|
||||
//its.it_value.tv_nsec=(delay_mp.begin()->first%1000000llu)*1000llu;
|
||||
//timerfd_settime(timer_fd,TFD_TIMER_ABSTIME,&its,0);
|
||||
|
||||
ev_timer_stop(loop, &timer);
|
||||
ev_timer_set(&timer, delay_mp.begin()->first /1000000.0 - ev_now(loop),0 ); //we should use ev_now here.
|
||||
ev_timer_start(loop, &timer);
|
||||
}
|
||||
else
|
||||
{
|
||||
ev_timer_stop(loop, &timer); //not necessary
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user