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



我发现tokio::io::BufReader有一个buffer()方法来访问它的内部读缓冲区。但是,我找不到tokio::io::BufStream的这样一个接口,也不能通过使用公共API访问BufStream的内部BufReader

我想知道这是故意的,还是有其他的方法?

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

我想实现一个具有AsyncRead + AsyncWrite特性的套接字的流量调度程序。调度器将尝试窥视底层套接字的第一次读取,以确定流量将被路由到哪里,然后返回一个也支持AsyncRead + AsyncWriteBufStream,就好像原始套接字未被触碰一样(没有消耗数据)。我的计划是首先触发对BufStreamfill_buf()调用,然后查看内部读缓冲区(我不知道如何做)。

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

最新更新