File:
[Public] /
libwww /
Library /
src /
HTEvent.c
Revision
2.9:
download - view:
text,
annotated -
select for diffs
Mon Feb 22 22:10:11 1999 UTC (25 years, 3 months ago) by
frystyk
Branches:
MAIN
CVS tags:
repeat-requests,
candidate-5-4-1,
before_webdav,
Release-5-4-0,
Release-5-3-1,
Release-5-2-8,
Release-5-2-6,
HEAD,
Amaya_2_4,
Amaya-6-3,
Amaya-6-1,
Amaya-5-2,
Amaya-4-3-2,
Amaya-4-3-1,
Amaya-4-3,
Amaya-4-1-2,
Amaya-4-1-0,
Amaya-4-0-0,
Amaya-3-2-1,
Amaya-3-2,
Amaya
NEW TRACE MESSAGES - see http://lists.w3.org/Archives/Public/www-lib/1999JanMar/0267.html for details
/* HTEvntrg.c
** EVENT DISPATCHER
**
** (c) COPYRIGHT MIT 1996.
** Please first read the full copyright statement in the file COPYRIGH.
** @(#) $Id: HTEvent.c,v 2.9 1999/02/22 22:10:11 frystyk Exp $
**
** The event dispatcher allows applications to register their own event
** models. They may register the standard HTEventrg methods from
** HTEventrg.c, of implement their functionality with their on methods.
**
** Authors:
** EGP Eric Gordon Prud'hommeuax
** Bugs
**
*/
/* Implementation dependent include files */
#include "wwwsys.h"
#include "WWWUtil.h"
#include "HTEvent.h" /* Implemented here */
PRIVATE HTEvent_registerCallback * RegisterCBF = NULL;
PRIVATE HTEvent_unregisterCallback * UnregisterCBF = NULL;
/* ------------------------------------------------------------------------- */
PUBLIC void HTEvent_setRegisterCallback(HTEvent_registerCallback * registerCBF)
{
HTTRACE(CORE_TRACE, "Event....... registering %p\n" _ registerCBF);
RegisterCBF = registerCBF;
}
PUBLIC void HTEvent_setUnregisterCallback(HTEvent_unregisterCallback * unregisterCBF)
{
HTTRACE(CORE_TRACE, "Event....... registering %p\n" _ unregisterCBF);
UnregisterCBF = unregisterCBF;
}
PUBLIC BOOL HTEvent_isCallbacksRegistered (void)
{
return (RegisterCBF && UnregisterCBF);
}
PUBLIC int HTEvent_unregister (SOCKET s, HTEventType type)
{
if (!UnregisterCBF) {
HTTRACE(CORE_TRACE, "Event....... No handler registered\n");
return -1;
}
return (*UnregisterCBF)(s, type);
}
PUBLIC int HTEvent_register(SOCKET s, HTEventType type, HTEvent * event)
{
if (!RegisterCBF) {
HTTRACE(CORE_TRACE, "Event....... No handler registered\n");
return -1;
}
return (*RegisterCBF)(s, type, event);
}
PUBLIC BOOL HTEvent_setCallback(HTEvent * event, HTEventCallback * cbf)
{
if (!event) return NO;
event->cbf = cbf;
return YES;
}
PUBLIC HTEvent * HTEvent_new (HTEventCallback * cbf, void * context,
HTPriority priority, int millis)
{
if (cbf) {
HTEvent * me;
if ((me = (HTEvent *) HT_CALLOC(1, sizeof(HTEvent))) == NULL)
HT_OUTOFMEM("HTEvent_new");
me->cbf = cbf;
me->param = context;
me->priority = priority;
me->millis = millis;
HTTRACE(CORE_TRACE, "Event....... Created event %p with context %p, priority %d, and timeout %d\n" _
me _ context _ priority _ millis);
return me;
}
return NULL;
}
PUBLIC BOOL HTEvent_delete (HTEvent * me)
{
if (me) {
HT_FREE(me);
HTTRACE(CORE_TRACE, "Event....... Deleted event %p\n" _ me);
return YES;
}
return NO;
}
PUBLIC BOOL HTEvent_setParam(HTEvent * event, void * param)
{
if (!event) return NO;
event->param = param;
return YES;
}
PUBLIC BOOL HTEvent_setPriority(HTEvent * event, HTPriority priority)
{
if (!event) return NO;
event->priority = priority;
return YES;
}
PUBLIC BOOL HTEvent_setTimeout(HTEvent * event, int timeout)
{
if (event) {
event->millis = timeout;
return YES;
}
return NO;
}
PUBLIC char * HTEvent_type2str(HTEventType type)
{
int i;
static char space[20]; /* in case we have to sprintf type */
static struct {int type; char * str;} match[] = {HT_EVENT_INITIALIZER};
for (i = 0; i < sizeof(match)/sizeof(match[0]); i++)
if (match[i].type == type)
return match[i].str;
sprintf(space, "0x%x", type);
return space;
}
Webmaster