timers.h
上传用户:gzpyjq
上传日期:2013-01-31
资源大小:1852k
文件大小:3k
源码类别:

手机WAP编程

开发平台:

WINDOWS

  1. /*
  2.  * timers.h - interface to timers and timer sets.
  3.  *
  4.  * Timers can be set to elapse after a specified number of seconds
  5.  * (the "interval").  They can be stopped before elapsing, and the
  6.  * interval can be changed.
  7.  *
  8.  * An "output list" is defined for each timer.  When it elapses, an
  9.  * event is generated on this list.  The event may be removed from
  10.  * the output list if the timer is destroyed or extended before the
  11.  * event is consumed.
  12.  *
  13.  * The event to use when a timer elapses is provided by the caller.
  14.  * The timer module will "own" it, and be responsible for deallocation.
  15.  * This will be true until the event has been consumed from the output
  16.  * list (at which point it is owned by the consuming thread).
  17.  * While the event is on the output list, it is in a gray area, because
  18.  * the timer module might still take it back.  This won't be a problem
  19.  * as long as you access the event only by consuming it.
  20.  *
  21.  * Timers work best if the thread that manipulates the timer (the
  22.  * "calling thread") is the same thread that consumes the output list.
  23.  * This way, it can be guaranteed that the calling thread will not
  24.  * see a timer elapse after being destroyed, or while being extended,
  25.  * because the elapse event will be deleted during such an operation.
  26.  *
  27.  * The timer_* functions have been renamed to gwtimer_* to avoid
  28.  * a name conflict on Solaris systems.
  29.  */
  30. #ifndef TIMERS_H
  31. #define TIMERS_H
  32. #include "gwlib/gwlib.h"
  33. #include "wap_events.h"
  34. typedef struct Timer Timer;
  35. /*
  36.  * Start up the timer system.
  37.  * Can be called more than once, in which case multiple shutdowns are
  38.  * also required.
  39.  */
  40. void timers_init(void);
  41. /*
  42.  * Stop all timers and shut down the timer system.
  43.  */
  44. void timers_shutdown(void);
  45. /*
  46.  * Create a timer and tell it to use the specified output list when
  47.  * it elapses.  Do not start it yet.  Return the new timer.
  48.  */
  49. Timer *gwtimer_create(List *outputlist);
  50. /*
  51.  * Destroy this timer and free its resources.  Stop it first, if needed.
  52.  */
  53. void gwtimer_destroy(Timer *timer);
  54. /*
  55.  * Make the timer elapse after 'interval' seconds, at which time it
  56.  * will push event 'event' on the output list defined for its timer set.
  57.  * - If the timer was already running, these parameters will override
  58.  *   its old settings.
  59.  * - If the timer has already elapsed, try to remove its event from
  60.  *   the output list.
  61.  * If this is not the first time the timer was started, the event
  62.  * pointer is allowed to be NULL.  In that case the event pointer
  63.  * from the previous call to timer_start for this timer is re-used.
  64.  * NOTE: Each timer must have a unique event pointer.  The caller must
  65.  * create the event, and passes control of it to the timer module with
  66.  * this call.
  67.  */
  68. void gwtimer_start(Timer *timer, int interval, WAPEvent *event);
  69. /*
  70.  * Stop this timer.  If it has already elapsed, try to remove its
  71.  * event from the output list.
  72.  */
  73. void gwtimer_stop(Timer *timer);
  74. #endif