| 
    Simple coroutine library integrated with IO event loop (libevent) / objects in plain C Snapshot 
   | 
 
timer object atached to event loop, when the timer fires, the timer id is sent to the thread that has set the timer More...
Classes | |
| struct | tagEVTIMER | 
Typedefs | |
| typedef struct tagEVTIMER | EVTIMER | 
Enumerations | |
| enum | EVTIMERSTATE { EVTIMER_STATE_INIT, EVTIMER_STATE_SCHEDULED } | 
Functions | |
| EVTIMER * | EVTIMER_init (EVTHREAD *thread, int timer_id, struct timeval tm) | 
| int | EVTIMER_start (EVTIMER *ret) | 
| int | EVTIMER_cancel (EVTIMER *timer) | 
| int | EVTIMER_free (EVTIMER *timer) | 
timer object atached to event loop, when the timer fires, the timer id is sent to the thread that has set the timer
| typedef struct tagEVTIMER EVTIMER | 
| enum EVTIMERSTATE | 
Definition at line 138 of file evthread.h.
| int EVTIMER_cancel | ( | EVTIMER * | timer | ) | 
Definition at line 201 of file evthread.c.
{
  if (timer->state != EVTIMER_STATE_SCHEDULED) {
    return -1;
  }
  
  MLOG_TRACE( "Timer %p canceled", &timer->timer_event ); 
  event_del( &timer->timer_event );
  timer->state = EVTIMER_STATE_INIT;
  return 0;
}
| int EVTIMER_free | ( | EVTIMER * | timer | ) | 
Definition at line 214 of file evthread.c.
{
  EVTIMER_cancel(timer);
  EVTHREAD_OBJECT_free( &timer->object_base );
  return 0;
}
Definition at line 165 of file evthread.c.
{
  EVTIMER *ret;
 
  ret = (EVTIMER *) malloc( sizeof( EVTIMER ) );
  if (!ret) {
    return 0;
  }
  ret->loop = thread->loop;
  ret->timer_id = timer_id;
  ret->tm = tm;
  ret->state = EVTIMER_STATE_INIT;
 
  EVTHREAD_OBJECT_init( &ret->object_base, EVTHREAD_OBJECT_TIMER , thread );
 
  return ret;
}
| int EVTIMER_start | ( | EVTIMER * | ret | ) | 
Definition at line 185 of file evthread.c.
{
  if (ret->state != EVTIMER_STATE_INIT) {
    return -1;
  }
  ret->state = EVTIMER_STATE_SCHEDULED;
  
  event_set( &ret->timer_event, -1, 0, timer_cb, (void *) ret );
  event_base_set( ret->loop->ev_base, &ret->timer_event );
  event_add( &ret->timer_event, &ret->tm );
  MLOG_TRACE( "Timer %p started %ld:%ld", &ret->timer_event, ret->tm.tv_sec, ret->tm.tv_usec ); 
  return 0;
}
 1.7.4