in netbench/src/multiplex.rs [193:219]
fn fill_read_buffer(&mut self, cx: &mut Context) -> Poll<Result<()>> {
// don't fill the buffer if we have a pending frame
if self.frame.is_some() {
return Poll::Pending;
}
// the socket is closed
if !self.rx_open {
return Ok(()).into();
}
let rx_open = &mut self.rx_open;
let inner = self.inner.as_mut();
ready!(self.read_buf.read(|buf| {
ready!(inner.poll_read(cx, buf))?;
// the socket returned a 0 write
if buf.filled().is_empty() {
*rx_open = false;
}
Ok(()).into()
}))?;
Ok(()).into()
}