/* 这里的fd根据不同的情况会传入不同的fd,
在server.c中传入的是sock函数返回的那个监听套接字描述符
之后可能传入的是连接的套接字文件描述符
还有可能是用于父子进程通信的管道对应的描述符!!震惊了
aeCreateFileEvent(server.el, conn->fd, AE_WRITABLE,conn->type->ae_handler, conn);
aeCreateFileEvent(server.el, server.rdb_pipe_read, AE_READABLE, rdbPipeReadHandler,NULL);
aeCreateFileEvent(server.el, server.ipfd[j], AE_READABLE,acceptTcpHandler,NULL)
*/
int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask,
aeFileProc *proc, void *clientData)
{
if (fd >= eventLoop->setsize) {
errno = ERANGE;
return AE_ERR;
}
aeFileEvent *fe = &eventLoop->events[fd];
if (aeApiAddEvent(eventLoop, fd, mask) == -1)
return AE_ERR;
fe->mask |= mask;
if (mask & AE_READABLE) fe->rfileProc = proc;
if (mask & AE_WRITABLE) fe->wfileProc = proc;
fe->clientData = clientData;
if (fd > eventLoop->maxfd)
eventLoop->maxfd = fd;
return AE_OK;
}


本文探讨了Linux服务器编程中的文件事件处理,重点讲解了aeCreateFileEvent函数的使用,该函数用于创建文件事件,可以处理监听套接字、连接套接字和管道等不同类型的文件描述符。它在服务器的事件循环中扮演关键角色,通过设置读写事件处理器来响应数据的可读写状态,确保高效的数据交互。
1576

被折叠的 条评论
为什么被折叠?



