Problem using libev c++ timer

Marc Lehmann schmorp at schmorp.de
Fri Dec 23 16:11:21 CET 2011


On Fri, Dec 23, 2011 at 05:39:14PM +0530, Savio Sebastian <savio_joysebastian at yahoo.com> wrote:
> class Timer {
> private:
>     ev::timer stopTimer;
> public:
>     Timer() {
>         stopTimer.set<Timer,&Timer::timeout_cb>(this);
>         stopTimer.start(0.,5);
>     }
>     void timeout_cb(ev::timer &watcher, int revents) {
>         cout << "TimeOut" << endl;
>     }
> };
> 
> int main(int argc,char **argv) {
>     ev::default_loop loop;
>     Timer time;
>     loop.run(0);
>     return 0;
> }
> 
> 
> Here my problem is the timeout call back function is getting called immediatly after the program execution begins instead of getting called after the timer has expired
> can anyone please help me

First of all, you are using undocumented functionality, which is not
supported (ev::default_loop) nor maintained.

Second, you initialise the timer to be invoked "0." seconds after start, and
then every 5 seconds afterwards, so that seems to match what you are getting.

Does it work like you expect if you swap the arguments of start to "(5, 0)"?

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\



More information about the libev mailing list