我发现tokio::io::BufReader
有一个buffer()
方法来访问它的内部读缓冲区。但是,我找不到tokio::io::BufStream
的这样一个接口,也不能通过使用公共API访问BufStream
的内部BufReader
。
我想知道这是故意的,还是有其他的方法?
顺便说一句,下面是我的用例:
我想实现一个具有AsyncRead + AsyncWrite
特性的套接字的流量调度程序。调度器将尝试窥视底层套接字的第一次读取,以确定流量将被路由到哪里,然后返回一个也支持AsyncRead + AsyncWrite
的BufStream
,就好像原始套接字未被触碰一样(没有消耗数据)。我的计划是首先触发对BufStream
的fill_buf()
调用,然后查看内部读缓冲区(我不知道如何做)。
我不认为这是一个固有的限制:BufStream
只是BufReader<BufWriter<RW>>
。如果你需要,你可以自己做,然后你可以访问缓冲区,但没有必要:fill_buf()
返回填充的缓冲区,所以你可以只使用它的返回值。