add SendResponse::poll_reset and SendStream::poll_reset to listen for reset streams (#279)

This commit is contained in:
Sean McArthur
2018-05-30 22:57:43 +02:00
committed by GitHub
parent 82addd6369
commit 3a4633d205
11 changed files with 281 additions and 11 deletions

View File

@@ -708,7 +708,7 @@ where
let mut stream = me.store.resolve(*key);
trace!("poll_pending_open; stream = {:?}", stream.is_pending_open);
if stream.is_pending_open {
stream.send_task = Some(task::current());
stream.wait_send();
return Ok(Async::NotReady);
}
}
@@ -930,6 +930,17 @@ impl<B> StreamRef<B> {
me.actions.send.poll_capacity(&mut stream)
}
/// Request to be notified for if a `RST_STREAM` is received for this stream.
pub(crate) fn poll_reset(&mut self, mode: proto::PollReset) -> Poll<Reason, ::Error> {
let mut me = self.opaque.inner.lock().unwrap();
let me = &mut *me;
let mut stream = me.store.resolve(self.opaque.key);
me.actions.send.poll_reset(&mut stream, mode)
.map_err(From::from)
}
pub(crate) fn key(&self) -> store::Key {
self.opaque.key
}