这个模块定义 HTTP 相关的写操作的抽象。
概述
服务器将响应发给客户端,客户端将请求发给服务器。
HttpWriter 是写操作的基对象, ServerResponse 和 ClientRequest 继承自该对象。 ServerResponse 表示服务器发出的响应, ClientRequest 表示客户端发出的请求。
Types
HttpWriter = ref object of RootObj conn: HttpConnection lock: AsyncLock onEnd: proc () {...}{.gcsafe, closure.} writable: bool
- 表示 HTTP 相关的写操作。 Source Edit
ServerResponse = ref object of HttpWriter
- 表示服务器发出的响应。 Source Edit
ClientRequest = ref object of HttpWriter
- 表示客户端发出的请求。 Source Edit
Procs
proc newServerResponse(conn: HttpConnection; onEnd: proc () {...}{.gcsafe, closure.}): ServerResponse {...}{. raises: [], tags: [].}
- 创建一个新的 ServerResponse 。 Source Edit
proc newClientRequest(conn: HttpConnection; onEnd: proc () {...}{.gcsafe, closure.}): ClientRequest {...}{. raises: [], tags: [].}
- 创建一个新的 ClientRequest 。 Source Edit
proc ended(writer: HttpWriter): bool {...}{.inline, raises: [], tags: [].}
- 如果底部连接已断开或写端已经关闭,则返回 true 。 Source Edit
proc write(writer: HttpWriter; buf: pointer; size: Natural): Future[void] {...}{.raises: [], tags: [].}
-
从 buf 写入 size 字节的数据。
如果写过程中出现系统错误,则会触发 OSError 异常;如果在成功写之前连接断开或者写端已经关闭,则会触发 WriteAbortedError 异常。
Source Edit proc write(writer: HttpWriter; data: string): Future[void] {...}{.raises: [], tags: [].}
-
写入一个字符串。
如果写过程中出现系统错误,则会触发 OSError 异常;如果在成功写之前连接断开或者写端已经关闭,则会触发 WriteAbortedError 异常。
Source Edit proc write(writer: HttpWriter; statusCode: HttpCode; fields: openArray[tuple[name: string, value: string]]): Future[void] {...}{. raises: [], tags: [].}
-
写入一个消息头。
如果写过程中出现系统错误,则会触发 OSError 异常;如果在成功写之前连接断开或者写端已经关闭,则会触发 WriteAbortedError 异常。
Source Edit proc write(writer: HttpWriter; statusCode: HttpCode; fields: openArray[tuple[name: string, value: seq[string]]]): Future[void] {...}{. raises: [], tags: [].}
-
写入一个消息头。
如果写过程中出现系统错误,则会触发 OSError 异常;如果在成功写之前连接断开或者写端已经关闭,则会触发 WriteAbortedError 异常。
Source Edit proc writeEnd(writer: HttpWriter) {...}{.raises: [], tags: [].}
- 关闭写端。之后,不能继续向 writer 写入数据,否则将引发 WriteAbortedError 异常。 Source Edit