skynet 源码分析

来源:互联网 发布:vm linux 共享文件夹 编辑:程序博客网 时间:2024/05/22 17:47

1. 核心部分,即底层网络封装部分,有5个文件

代码为C语言


socket_poll.h //封装了关于多路复用的系统调用,即(以epoll为例)

static bool sp_invalid(poll_fd fd);
static poll_fd sp_create();
static void sp_release(poll_fd fd);
static int sp_add(poll_fd fd, int sock, void *ud);
static void sp_del(poll_fd fd, int sock);
static void sp_write(poll_fd, int sock, void *ud, bool enable);
static int sp_wait(poll_fd, struct event *e, int max);
static void sp_nonblocking(int sock);


socket_epoll.h//linux平台的实现       利用epoll

socket_kqueue.h//bsd平台实现         利用kqueue


socket_server.h//

socket_server.c//

利用了两个重要的结构:

一个是struct socket,对fd以及fd相关的属性进行了封装。

一个是struct socket_server,包装了管道的读写端,以及发生的事件表,socket池等。

其中所有函数如下:

socket_server_create//创建了一个socket_server指针赋值并返回

socket_server_release

socket_server_poll//处理管道上来的指令 和 epoll_wait事件

socket_server_exit

socket_server_close

socket_server_start

socket_server_send

socket_server_listen

socket_server_connect

socket_server_bind

socket_server_block_connect





0 0
原创粉丝点击