【Redis-6.0.8】网络模型图解

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值