Advertisement
Guest User

Untitled

a guest
May 31st, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. #include "Timer.h"
  2.  
  3.     Timer *Timer_Create(long interval, ITimerTask(run)){
  4.         Timer *timer = (Timer*)malloc(sizeof(Timer));
  5.  
  6.             timer->enable=false;
  7.             timer->interval=interval;
  8.             timer->run=run;
  9.             timer->id = NULL;
  10.  
  11.         return timer;
  12.     }
  13.  
  14.     unsigned long getTime(){
  15.         Time timestamp;
  16.         gettimeofday(&timestamp,NULL);
  17.  
  18.         unsigned long timeMls = timestamp.tv_usec/1000;
  19.         return timeMls; // переводим из микросекунд в миллисекунды
  20.     }
  21.  
  22.     void Timer_Start(Timer *timer){
  23.  
  24.         if(timer->enable){
  25.             return;
  26.         }
  27.  
  28.         timer->enable = true;
  29.         timer->id=g_timeout_add(timer->interval,timer->run,NULL);
  30.  
  31.     }
  32.  
  33.     void Timer_Stop(Timer *timer){
  34.  
  35.         if(!timer->enable){
  36.             return;
  37.         }
  38.  
  39.         timer->enable = false; // помечаем флаг активности как "неактивен"
  40.         g_source_remove(timer->id);
  41.         timer->id=NULL;
  42.  
  43.     }
  44.  
  45.     void Timer_Destroy(Timer *timer){
  46.  
  47.         if(timer->enable){
  48.             Timer_Stop(timer); // если таймер был запущен, нужно его остановить
  49.         }
  50.  
  51.         free(timer); // высвобождаем память, выделенную под таймер
  52.  
  53.     }
  54.  
  55.     ITimerService TimerService = {
  56.  
  57.         Timer_Create,
  58.         Timer_Start,
  59.         Timer_Stop,
  60.         Timer_Destroy
  61.  
  62.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement