|
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