Pipelines.Sockets.Unofficial.SocketConnection是否曾经在没有请求的情况下刷新?

时间:2019-06-06 16:34:28

标签: c# system.io.pipelines

我正在使用Marc Gravell的Pipelines.Sockets.Unofficial库通过套接字获取IDuplexPipe,但是我发现需要在刷新前修改消息头的情况。如果我致电Advance,是否可以保证在调用FlushAsync之前它永远不会刷新?类型暗示(高级是同步的,而冲洗不是),但是我希望有人能给出明确的答案。

还可以在经过缓冲区之后明智地写入缓冲区中的某个点吗?

1 个答案:

答案 0 :(得分:2)

不,不能保证。 Advance方法在逻辑上将数据提交到出站管道。提交后,如果管道上有活动的使用者,它可以读取该值并对其进行处理。需要澄清的是,FlushAsync()方法专门执行仅与切线相关的两件事:

  • 它可以确保唤醒消费者(如果尚未唤醒)
  • 如果存在背压,则会延迟生产者,直到消费者清除了一些背压
  

经过缓冲区后,我可以明智地写入缓冲区中的某个点吗?