in netbench/src/multiplex.rs [395:415]
fn poll_send_finish(&mut self, owner: Owner, id: u64, _cx: &mut Context) -> Poll<Result<()>> {
if !self.write_buf.request_push(self.config.max_write_queue_len) {
return Poll::Pending;
}
if let Entry::Occupied(mut entry) = self.streams[owner].entry(id) {
let stream = entry.get_mut();
if stream.tx.take().is_some() {
self.write_buf
.push(frame::Frame::StreamFinish { id, owner: !owner });
}
if stream.rx.is_none() {
entry.remove();
self.stream_controller.close();
}
}
Ok(()).into()
}