* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
- * $Id: commio.h 1757 2006-07-25 23:34:45Z jilles $
+ * $Id: commio.h 3354 2007-04-03 09:21:31Z nenolod $
*/
#ifndef INCLUDED_commio_h
#include "setup.h"
#include "config.h"
#include "ircd_defs.h"
+#include "tools.h"
+
+typedef struct _fde fde_t;
/* Callback for completed IO events */
typedef void PF(int fd, void *);
+/* virtual function types for I/O --nenolod */
+typedef int IOFuncRead(fde_t *, void *buf, size_t count);
+typedef int IOFuncWrite(fde_t *, const void *buf, size_t count);
+
/* Callback for completed connections */
/* int fd, int status, void * */
typedef void CNCB(int fd, int, void *);
}
fdlist_t;
-typedef struct _fde fde_t;
-
extern int highest_fd;
extern int number_fd;
fdlist_t list; /* Which list this FD should sit on */
int comm_index; /* where in the poll list we live */
char desc[FD_DESC_SZ];
+
PF *read_handler;
void *read_data;
+
PF *write_handler;
void *write_data;
+
PF *timeout_handler;
void *timeout_data;
time_t timeout;
+
PF *flush_handler;
void *flush_data;
time_t flush_timeout;
+
+ IOFuncRead *read_impl;
+ IOFuncWrite *write_impl;
+
struct DNSQuery *dns_query;
struct
{
}
connect;
int pflags;
+ dlink_node node;
};
-extern fde_t *fd_table;
-
void fdlist_init(void);
extern void comm_open(int, unsigned int, const char *);
#define mangle_mapped_sockaddr(x)
#endif
+extern int comm_get_maxconnections(void);
+
+extern fde_t *comm_locate_fd(int fd);
#endif /* INCLUDED_commio_h */