1. 三个struct结构体
1. 事件结构体,每个fd对应一个event
struct ntyevent {
int fd; //每个event对应一个fd
int events;
void *arg;
int (*callback)(int fd, int events, void *arg); //回调函数
int status;
char buffer[BUFFER_LENGTH]; 读/写buffer
int length;
long last_active;
};
2. 采用一个数组挂一个链表的形式保存event块
struct eventblock {
struct eventblock *next;
struct ntyevent *events;//链表长度小于1024
};
3. reactor结构,一个reactor管理所有event
struct ntyreactor {
int epfd;
int blkcnt;
struct eventblock *evblk; //fd --> 100w
};
2. 主函数流程
1. 初始化监听socket
int sockfd = init_sock(port); // socket, bind ,listenfd
2. 创建reactor