/*                                                 W3C Sample Code Library libwww Timer Class
 */
/*
**      (c) COPYRIGHT MIT 1995.
**      Please first read the full copyright statement in the file COPYRIGH.
*/
/*

   The Timer class handles timer 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.
   
 */
#ifndef HTTIMER_H
#define HTTIMER_H

#include "wwwsys.h"
#include "HTReq.h"

#ifndef IN_EVENT
typedef struct _HTTimer HTTimer;
#endif

typedef int HTTimerCallback (HTTimer *, void *, HTEventType type);
/*

 */
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 int HTTimer_dispatch (HTTimer * timer);
extern ms_t HTTimer_getTime(HTTimer * timer);
/*

 */
extern BOOL HTTimer_refresh(HTTimer * timer, ms_t now);
/*

   If so then it's time to call the dispatcher!
   
 */
extern BOOL HTTimer_hasTimerExpired (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);
/*

   Dispatches all expired timers and optionally returns the time till the next one.
   
 */
extern int HTTimer_next (ms_t * pSoonest);
/*

 */
#endif /* HTTIMER_H */
/*

   
   ___________________________________
   
   */
