in netbench/src/multiplex.rs [339:370]
fn poll_send(
&mut self,
owner: Owner,
id: u64,
bytes: u64,
cx: &mut Context,
) -> Poll<Result<u64>> {
if !self.write_buf.request_push(self.config.max_write_queue_len) {
return Poll::Pending;
}
let stream = self.streams[owner]
.get_mut(&id)
.ok_or("missing stream")?
.tx
.as_mut()
.ok_or("missing tx stream")?;
let allowed_bytes = bytes.min(self.config.max_stream_frame_len as _);
if let Some(data) = stream.send(allowed_bytes, cx) {
let len = data.len() as u64;
self.write_buf.push(frame::Frame::StreamData {
id,
owner: !owner,
data,
});
Ok(len).into()
} else {
Poll::Pending
}
}