1 #ifndef __GS_EVENT_H__ 2 #define __GS_EVENT_H__ 1 3 4 5 typedef int (*gsevent_cb_t)(void *event); 6 7 8 typedef struct 9 { 10 void *mgr; 11 uint64_t interval; 12 uint64_t start; 13 uint64_t due; 14 GS_LIST_ITEM li; 15 16 void *data; 17 size_t len; 18 gsevent_cb_t func; 19 int is_calloc; 20 int id; 21 } GS_EVENT; 22 23 /* 24 * Keep track of all events under a context 25 */ 26 typedef struct 27 { 28 GS_LIST list_ts; // events by timestamp (usec) 29 int id_counter; 30 int is_return_to_caller; 31 } GS_EVENT_MGR; 32 33 int GS_EVENT_MGR_init(GS_EVENT_MGR *mgr); 34 GS_EVENT *GS_EVENT_add_by_ts(GS_EVENT_MGR *mgr, GS_EVENT *gsevent, uint64_t start, uint64_t interval, gsevent_cb_t func, void *data, size_t len); 35 int GS_EVENT_del(GS_EVENT *gsevent); 36 uint64_t GS_EVENT_usec_until_event(GS_EVENT_MGR *mgr); 37 uint64_t GS_EVENT_execute(GS_EVENT_MGR *mgr); 38 uint64_t GS_EVENT_execute_all(GS_EVENT_MGR *mgr); 39 40 #endif /* !__GS_EVENT_H__ */