如何访问tokio::io::BufStream的读缓冲区?

How to access the read buffer of tokio::io::BufStream?

我认识到 tokio::io::BufReader 有一个 buffer() 方法来访问其内部读取缓冲区。但是我找不到 tokio::io::BufStream 这样的接口,也无法使用 public API.[=21= 访问 BufStream 的内部 BufReader ]

我想知道这是设计使然,还是有其他方法可以做到?

顺便说一句,以下是我的用例:

我想为具有特征 AsyncRead + AsyncWrite 的套接字实现流量调度程序。 dispatcher 会尝试 peek 底层 socket 的第一个 read 以确定流量将被路由到哪里,然后 return 一个也支持 AsyncRead + AsyncWriteBufStream,就好像原来的 socket 是未受影响(不消耗数据)。 我的计划是首先触发对 BufStreamfill_buf() 调用,然后查看内部读取缓冲区(我不知道该怎么做)。

我认为这不是固有限制:BufStream is just BufReader<BufWriter<RW>>。如果需要,你可以自己做,然后你可以访问缓冲区,但是没有必要: fill_buf() returns 填充的缓冲区,所以你可以只使用它的返回值。