/* ** (c) COPYRIGHT MIT 1995. ** Please first read the full copyright statement in the file COPYRIGH. */
The Timer class handles timers for libwww and the application. This works exactly as in X where you create a timer object with a callback function and a timeout. The callback will be called every time the timer expires. There are several timeouts that can be set in libwww:
#ifndef HTTIMER_H #define HTTIMER_H #include "wwwsys.h" #include "HTReq.h" #ifdef __cplusplus extern "C" { #endif typedef struct _HTTimer HTTimer; typedef int HTTimerCallback (HTTimer *, void *, HTEventType type);
The callback function is the function that is to be called when timer expires.
extern HTTimer * HTTimer_new (HTTimer *, HTTimerCallback *, void *, ms_t millis, BOOL relative, BOOL repetitive); extern BOOL HTTimer_delete (HTTimer * timer); extern BOOL HTTimer_deleteAll (void); extern BOOL HTTimer_expireAll (void);
Just do it
extern int HTTimer_dispatch (HTTimer * timer);
Dispatches all expired timers and optionally returns the time till the next one.
extern int HTTimer_next (ms_t * pSoonest);
extern BOOL HTTimer_refresh(HTTimer * timer, ms_t now);
Absolute time in millies when this timer will expire
extern ms_t HTTimer_expiresAbsolute (HTTimer * timer);
Gived the relative time in millies that this timer was registered with. For example, a relative timer set to expire in 20ms will return 20.
#define HTTimer_getTime(t) HTTimer_expiresRelative(t) extern ms_t HTTimer_expiresRelative (HTTimer * timer);
If so then it's time to call the dispatcher!
extern BOOL HTTimer_hasTimerExpired (HTTimer * timer);
extern HTTimerCallback * HTTimer_callback (HTTimer * timer);
extern BOOL HTTimer_isRelative (HTTimer * timer);
On some platform, timers are supported via events or other OS specific mechanisms. You can make libwww can support these by registering a platform specific timer add and timer delete method.
typedef BOOL HTTimerSetCallback (HTTimer * timer); extern BOOL HTTimer_registerSetTimerCallback (HTTimerSetCallback * cbf); extern BOOL HTTimer_registerDeleteTimerCallback (HTTimerSetCallback * cbf);
#ifdef __cplusplus } #endif #endif /* HTTIMER_H */