Make fde raw I/O functions act on the FDE object, not the FD directly.
This commit is contained in:
parent
5893220fdc
commit
d877759f5b
2 changed files with 28 additions and 8 deletions
|
@ -58,6 +58,26 @@ static void comm_connect_dns_callback(void *vptr, struct DNSReply *reply);
|
||||||
static PF comm_connect_tryconnect;
|
static PF comm_connect_tryconnect;
|
||||||
static int comm_max_connections = 0;
|
static int comm_max_connections = 0;
|
||||||
|
|
||||||
|
static int
|
||||||
|
comm_read_raw(fde_t *F, void *buf, size_t count)
|
||||||
|
{
|
||||||
|
s_assert(F != NULL);
|
||||||
|
s_assert(buf != NULL);
|
||||||
|
s_assert(count > 0);
|
||||||
|
|
||||||
|
return read(F->fd, buf, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
comm_write_raw(fde_t *F, const void *buf, size_t count)
|
||||||
|
{
|
||||||
|
s_assert(F != NULL);
|
||||||
|
s_assert(buf != NULL);
|
||||||
|
s_assert(count > 0);
|
||||||
|
|
||||||
|
return write(F->fd, buf, count);
|
||||||
|
}
|
||||||
|
|
||||||
inline fde_t *
|
inline fde_t *
|
||||||
comm_locate_fd(int fd)
|
comm_locate_fd(int fd)
|
||||||
{
|
{
|
||||||
|
@ -88,8 +108,8 @@ comm_add_fd(int fd)
|
||||||
F = MyMalloc(sizeof(fde_t));
|
F = MyMalloc(sizeof(fde_t));
|
||||||
F->fd = fd;
|
F->fd = fd;
|
||||||
|
|
||||||
F->read_impl = read;
|
F->read_impl = comm_read_raw;
|
||||||
F->write_impl = write;
|
F->write_impl = comm_write_raw;
|
||||||
|
|
||||||
list = &fd_table[fd % FD_HASH_SIZE];
|
list = &fd_table[fd % FD_HASH_SIZE];
|
||||||
dlinkAdd(F, &F->node, list);
|
dlinkAdd(F, &F->node, list);
|
||||||
|
|
|
@ -32,12 +32,14 @@
|
||||||
#include "ircd_defs.h"
|
#include "ircd_defs.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
|
typedef struct _fde fde_t;
|
||||||
|
|
||||||
/* Callback for completed IO events */
|
/* Callback for completed IO events */
|
||||||
typedef void PF(int fd, void *);
|
typedef void PF(int fd, void *);
|
||||||
|
|
||||||
/* virtual function types for I/O --nenolod */
|
/* virtual function types for I/O --nenolod */
|
||||||
typedef void IOFuncRead(int fd, void *buf, size_t count);
|
typedef int IOFuncRead(fde_t *, void *buf, size_t count);
|
||||||
typedef void IOFuncWrite(int fd, const void *buf, size_t count);
|
typedef int IOFuncWrite(fde_t *, const void *buf, size_t count);
|
||||||
|
|
||||||
/* Callback for completed connections */
|
/* Callback for completed connections */
|
||||||
/* int fd, int status, void * */
|
/* int fd, int status, void * */
|
||||||
|
@ -80,8 +82,6 @@ typedef enum fdlist_t
|
||||||
}
|
}
|
||||||
fdlist_t;
|
fdlist_t;
|
||||||
|
|
||||||
typedef struct _fde fde_t;
|
|
||||||
|
|
||||||
|
|
||||||
extern int highest_fd;
|
extern int highest_fd;
|
||||||
extern int number_fd;
|
extern int number_fd;
|
||||||
|
@ -115,8 +115,8 @@ struct _fde
|
||||||
void *flush_data;
|
void *flush_data;
|
||||||
time_t flush_timeout;
|
time_t flush_timeout;
|
||||||
|
|
||||||
IOReadFunc *read_impl;
|
IOFuncRead *read_impl;
|
||||||
IOWriteFunc *write_impl;
|
IOFuncWrite *write_impl;
|
||||||
|
|
||||||
struct DNSQuery *dns_query;
|
struct DNSQuery *dns_query;
|
||||||
struct
|
struct
|
||||||
|
|
Loading…
Reference in a new issue