项目

通用

资料

操作

网络后端

写入

网络后端必须发送两种不同类型的信息
  • 内存块
  • 文件块

因此,网络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()读取。

stbuehler将近13年前 更新 · 3次修订