#ifndef LCBIO_TIMER_H
#define LCBIO_TIMER_H
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
LCBIO_TIMER_S_ENTERED = 0x01,
LCBIO_TIMER_S_DESTROYED = 0x02,
LCBIO_TIMER_S_ARMED = 0x04
} lcbio_TIMERSTATE;
typedef void (*lcbio_TIMER_cb)(void *);
typedef struct lcbio_TIMER {
void *event;
void *data;
lcbio_TIMER_cb callback;
uint32_t usec_;
lcbio_TIMERSTATE state;
lcbio_pTABLE io;
} lcbio_TIMER, lcbio_ASYNC;
lcbio_TIMER *
lcbio_timer_new(lcbio_pTABLE iot, void *data, lcbio_TIMER_cb callback);
void
lcbio_timer_destroy(lcbio_TIMER *tm);
void
lcbio_timer_rearm(lcbio_TIMER *timer, uint32_t usec);
void
lcbio_timer_disarm(lcbio_TIMER *timer);
void
lcbio_async_signal(lcbio_TIMER *timer);
void
lcbio_async_cancel(lcbio_TIMER *timer);
#define lcbio_timer_armed(timer) ((timer)->state & LCBIO_TIMER_S_ARMED)
#define lcbio_timer_get_target(timer) (timer)->callback
#define lcbio_timer_set_target(timer, tgt) (timer)->callback = tgt
void
lcbio_timer_dump(lcbio_TIMER *timer, FILE *fp);
#ifdef __cplusplus
}
#endif
#endif