[dhcp-agent-commits] dhcp-agent dhcp-timer.c,1.1,1.2 dhcp-timer.h,1.1,1.2
Status: Alpha
Brought to you by:
actmodern
From: <act...@us...> - 2002-10-26 18:13:50
|
Update of /cvsroot/dhcp-agent/dhcp-agent In directory usw-pr-cvs1:/tmp/cvs-serv23040 Modified Files: dhcp-timer.c dhcp-timer.h Log Message: culled timer routines to be better Index: dhcp-timer.c =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-timer.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dhcp-timer.c 26 Oct 2002 14:26:41 -0000 1.1 --- dhcp-timer.c 26 Oct 2002 18:13:48 -0000 1.2 *************** *** 26,29 **** --- 26,30 ---- * * All timers have an unsigned 32-bit integer ID assigned to them. + * */ *************** *** 34,81 **** #include <dhcp-timer.h> ! /* create a new trigger. */ ! static trigger_t *create_trigger(uint32_t id, uint32_t trigger_time) ! { ! trigger_t *trigger; ! ! trigger = xmalloc(sizeof(trigger_t)); ! trigger->trigger_id = id; ! trigger->trigger_timer = trigger_time; ! ! return trigger; ! } ! ! /* destroy a trigger. */ ! static void destroy_trigger(trigger_t *trigger) ! { ! xfree(trigger); ! return; ! } ! ! /* utility routine to get trigger by its id -- pass this to ! * list_find_datum_by */ ! static uint32_t get_trigger_id(trigger_t *trigger) ! { ! return trigger->trigger_id; ! } ! ! /* utility to pass to purge_list. */ ! static void destroy_trigger_l(void *p) { ! trigger_t *trigger = p; ! ! destroy_trigger(trigger); ! return; ! } ! /* utility list find routine. */ ! int find_trigger_by_id(void *trigger_p, void *id_p) ! { ! uint32_t *id = id_p; ! trigger_t *trigger = trigger_p; ! if(get_trigger_id(trigger) == *id) return 1; return 0; } --- 35,52 ---- #include <dhcp-timer.h> ! /* compare triggers by returning shortest time as highest. */ ! static int compare_triggers_shortest(void *trigger1_p, void *trigger2_p) { ! uint32_t *trigger1, *trigger2; ! trigger1 = trigger1_p; ! trigger2 = trigger2_p; ! if(trigger1 > trigger2) return 1; + if(trigger1 < trigger2) + return -1; + return 0; } *************** *** 88,92 **** timer = xmalloc(sizeof(timer_keeper_t)); timer->triggers = NULL; - timer->active = 0; return timer; --- 59,62 ---- *************** *** 96,100 **** void destroy_timer(timer_keeper_t *timer) { ! purge_list(timer->triggers, destroy_trigger_l); xfree(timer); --- 66,70 ---- void destroy_timer(timer_keeper_t *timer) { ! purge_list(timer->triggers, NULL); xfree(timer); *************** *** 103,109 **** /* add a new trigger. */ ! void timer_add_trigger(timer_keeper_t *timer, uint32_t id, uint32_t time) { ! trigger_t *trigger = create_trigger(id, time); timer->triggers = add_to_list(timer->triggers, trigger); --- 73,80 ---- /* add a new trigger. */ ! void timer_add_trigger(timer_keeper_t *timer, uint32_t trigger_time) { ! uint32_t *trigger = xmalloc(sizeof(uint32_t)); ! *trigger = trigger_time; timer->triggers = add_to_list(timer->triggers, trigger); *************** *** 112,129 **** } ! /* delete a trigger by its id. */ ! int timer_delete_trigger(timer_keeper_t *timer, uint32_t id) { ! list_t *trigger_l; ! trigger_t *trigger; ! trigger_l = list_find_datum_by(timer->triggers, find_trigger_by_id, &id); ! if(trigger_l == NULL) ! return 1; ! trigger = trigger_l->data; ! timer->triggers = remove_from_list(timer->triggers, trigger); ! return 0; } --- 83,100 ---- } ! /* timer setup next trigger. */ ! void timer_set_next(timer_keeper_t *timer) { ! uint32_t *trigger; ! if(timer->triggers == NULL) ! return; ! timer->triggers = sort_list(timer->triggers, compare_triggers_shortest); ! trigger = timer->triggers->data; ! alarm(*trigger); ! timer->triggers = remove_from_list(timer->triggers, timer->triggers->data); ! xfree(trigger); } Index: dhcp-timer.h =================================================================== RCS file: /cvsroot/dhcp-agent/dhcp-agent/dhcp-timer.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dhcp-timer.h 26 Oct 2002 14:26:41 -0000 1.1 --- dhcp-timer.h 26 Oct 2002 18:13:48 -0000 1.2 *************** *** 33,48 **** typedef struct { list_t *triggers; - uint8_t active; } timer_keeper_t; - typedef struct { - uint32_t trigger_id; - uint32_t trigger_timer; - } trigger_t; - extern timer_keeper_t *create_timer(void); extern void destroy_timer(timer_keeper_t *timer); ! extern void timer_add_trigger(timer_keeper_t *timer, uint32_t id, uint32_t time); ! extern int timer_delete_trigger(timer_keeper_t *timer, uint32_t id); #endif /* DHCP_TIMER_H */ --- 33,43 ---- typedef struct { list_t *triggers; } timer_keeper_t; extern timer_keeper_t *create_timer(void); extern void destroy_timer(timer_keeper_t *timer); ! extern void timer_set_next(timer_keeper_t *timer); ! extern void timer_add_trigger(timer_keeper_t *timer, uint32_t time); ! extern int timer_purge(timer_keeper_t); #endif /* DHCP_TIMER_H */ |