Pipelines.Sockets.Unofficial.SocketConnection 会在没有请求的情况下刷新吗?
Does Pipelines.Sockets.Unofficial.SocketConnection ever flush without a request?
我正在使用 Marc Gravell 的 Pipelines.Sockets.Unofficial 库通过套接字获取 IDuplexPipe,但我发现需要在刷新之前修改消息 header 的情况。如果我调用 Advance,我是否保证在我调用 FlushAsync 之前它永远不会刷新?它由类型暗示(Advance 是同步的而 Flush 不是)但我希望有人有明确的答案。
此外,我可以在经过某个点后明智地写入缓冲区中的某个点吗?
不,这不能保证。 Advance
方法逻辑上将数据提交到出站管道;一旦提交,如果管道上有 一个活跃的消费者,它可以读取该值并继续处理它。澄清一下,FlushAsync()
方法专门做了两件事,它们只是切线相关:
- 它确保消费者被唤醒(如果尚未唤醒)
- 如果有back-pressure,它会延迟生产者,直到消费者清除了一些back-pressure
can I sensibly write to a point in the buffer after I've advanced past it?
没有
我正在使用 Marc Gravell 的 Pipelines.Sockets.Unofficial 库通过套接字获取 IDuplexPipe,但我发现需要在刷新之前修改消息 header 的情况。如果我调用 Advance,我是否保证在我调用 FlushAsync 之前它永远不会刷新?它由类型暗示(Advance 是同步的而 Flush 不是)但我希望有人有明确的答案。
此外,我可以在经过某个点后明智地写入缓冲区中的某个点吗?
不,这不能保证。 Advance
方法逻辑上将数据提交到出站管道;一旦提交,如果管道上有 一个活跃的消费者,它可以读取该值并继续处理它。澄清一下,FlushAsync()
方法专门做了两件事,它们只是切线相关:
- 它确保消费者被唤醒(如果尚未唤醒)
- 如果有back-pressure,它会延迟生产者,直到消费者清除了一些back-pressure
can I sensibly write to a point in the buffer after I've advanced past it?
没有