操作
网络后端¶
写入¶
网络后端必须发送两种不同类型的信息- 内存块
- 文件块
因此,网络API有两个级别;第一个级别根据块类型选择第二个级别中的操作来使用。
为了确保我们不会在单个连接上“阻塞”(如果网络速度快于我们推送的速度),我们必须跟踪发送了多少字节。
字节。
第一级示例
network_status_t network_write_writev(connection *con, int fd, chunkqueue *cq);
第二级示例
network_status_t network_backend_writev(connection *con, int fd, chunkqueue *cq, goffset *write_max);
第二级后端写入可以处理内存块和文件块,并被设计为后备方案;writev只处理内存块,sendfile后端只处理文件块。
如果一个第一级函数命名为“sendfile”,它会使用writev处理内存块,并使用sendfile后端处理文件块。
如果sendfile系统调用不支持特定的文件/套接字组合,每个sendfile后端都应该回退到write后端。
读取¶
对于读取,没有太多选择;要么使用read()读取,要么通过openssl()读取。