/*
 * Copyright (C) 2001, Shilad Sen, Sourcelight Technologies, Inc.
 * See xmlrpc.h or the README for more copyright information.
 *
 * An object which monitors file descriptors for events and performs
 * callbacks when interesting events happen
 */


#ifndef _RPCDISPATCH_H_
#define _RPCDISPATCH_H_


#include "rpcInclude.h"


PyTypeObject	rpcDispType;
struct _disp;				/* to appease the compiler gods */


/*
 * A dispatcher for file-descriptor based events
 */
typedef struct _disp {
	PyObject_HEAD			/* python standard */
	uint		maxid,		/* the next source id to use */
			scard,		/* number of sources */
			salloc;		/* amount of sources allocated */
	double		etime;		/* when work should stop */
	rpcSource	**srcs;		/* array of pointers to sources */
} rpcDisp;


rpcDisp		*rpcDispNew(void);
void		rpcDispClear(rpcDisp *dp);
void		rpcDispDealloc(rpcDisp *dp);
PyObject	*rpcDispActiveFds(rpcDisp *dp);
bool		rpcDispAddSource(rpcDisp *dp, rpcSource *sp);
bool		rpcDispDelSource(rpcDisp *dp, rpcSource *sp);
bool		rpcDispWork(rpcDisp *dp, double timeout, bool *timedOut);


#endif /* _RPCDISPATCH_H_ */


syntax highlighted by Code2HTML, v. 0.9.1