Annotation of embedaddon/mpd/src/timer.c, revision 1.1.1.1

1.1       misho       1: 
                      2: /*
                      3:  * timer.c
                      4:  *
                      5:  * Written by Archie Cobbs <archie@freebsd.org>
                      6:  * Copyright (c) 1995-1999 Whistle Communications, Inc. All rights reserved.
                      7:  * See ``COPYRIGHT.whistle''
                      8:  */
                      9: 
                     10: #include "ppp.h"
                     11: 
                     12: /*
                     13:  * INTERNAL FUNCTIONS
                     14:  */
                     15: 
                     16:   static void  TimerExpires(int type, void *cookie);
                     17: 
                     18: /*
                     19:  * TimerInit()
                     20:  */
                     21: 
                     22: void
                     23: TimerInit2(PppTimer timer, const char *desc,
                     24:   int load, void (*handler)(void *), void *arg, const char *dbg)
                     25: {
                     26:   memset(timer, 0, sizeof(*timer));
                     27:   timer->load  = (load >= 0) ? load : 0;
                     28:   timer->func  = handler;
                     29:   timer->arg   = arg;
                     30:   timer->desc  = desc;
                     31:   timer->dbg   = dbg;
                     32: }
                     33: 
                     34: /*
                     35:  * TimerStart()
                     36:  */
                     37: 
                     38: void
                     39: TimerStart2(PppTimer timer, const char *file, int line)
                     40: {
                     41:     /* Stop timer if running */
                     42:     assert(timer->func);
                     43:     if (EventIsRegistered(&timer->event))
                     44:        EventUnRegister(&timer->event);
                     45: 
                     46:     Log(LG_EVENTS, ("EVENT: Starting timer \"%s\" %s() for %d ms at %s:%d",
                     47:        timer->desc, timer->dbg, timer->load, file, line));
                     48:     /* Register timeout event */
                     49:     EventRegister(&timer->event, EVENT_TIMEOUT,
                     50:        timer->load, 0, TimerExpires, timer);
                     51: }
                     52: 
                     53: /*
                     54:  * TimerStartRecurring()
                     55:  */
                     56: 
                     57: void
                     58: TimerStartRecurring2(PppTimer timer, const char *file, int line)
                     59: {
                     60:     /* Stop timer if running */
                     61:     assert(timer->func);
                     62:     Log(LG_EVENTS, ("EVENT: Starting recurring timer \"%s\" %s() for %d ms at %s:%d",
                     63:        timer->desc, timer->dbg, timer->load, file, line));
                     64:     if (EventIsRegistered(&timer->event))
                     65:        EventUnRegister(&timer->event);
                     66: 
                     67:     /* Register timeout event */
                     68:     EventRegister(&timer->event, EVENT_TIMEOUT,
                     69:        timer->load, EVENT_RECURRING, TimerExpires, timer);
                     70: }
                     71: 
                     72: /*
                     73:  * TimerStop()
                     74:  */
                     75: 
                     76: void
                     77: TimerStop2(PppTimer timer, const char *file, int line)
                     78: {
                     79:     /* Stop timer if running */
                     80:     Log(LG_EVENTS, ("EVENT: Stopping timer \"%s\" %s() at %s:%d",
                     81:        timer->desc, timer->dbg, file, line));
                     82:     if (EventIsRegistered(&timer->event))
                     83:        EventUnRegister(&timer->event);
                     84: }
                     85: 
                     86: /*
                     87:  * TimerExpires()
                     88:  */
                     89: 
                     90: static void
                     91: TimerExpires(int type, void *cookie)
                     92: {
                     93:     PppTimer   const timer = (PppTimer) cookie;
                     94:     const char *desc = timer->desc;
                     95:     const char *dbg = timer->dbg;
                     96: 
                     97:     Log(LG_EVENTS, ("EVENT: Processing timer \"%s\" %s()", desc, dbg));
                     98:     (*timer->func)(timer->arg);
                     99:     Log(LG_EVENTS, ("EVENT: Processing timer \"%s\" %s() done", desc, dbg));
                    100: }
                    101: 
                    102: /*
                    103:  * TimerRemain()
                    104:  *
                    105:  * Return number of ticks left on a timer, or -1 if not running.
                    106:  */
                    107: 
                    108: int
                    109: TimerRemain(PppTimer t)
                    110: {
                    111:   return(EventTimerRemain(&t->event));
                    112: }
                    113: 
                    114: /*
                    115:  * TimerStarted()
                    116:  *
                    117:  * Return Timer status.
                    118:  */
                    119: 
                    120: int
                    121: TimerStarted(PppTimer t)
                    122: {
                    123:   return (EventIsRegistered(&t->event));
                    124: }
                    125: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>