1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use pool::Pool;
use sender::Sender;
use futures::{Future, Poll, Async};
#[derive(Debug)]
pub struct Shutdown {
pub(crate) inner: Sender,
}
impl Shutdown {
fn inner(&self) -> &Pool {
&*self.inner.inner
}
}
impl Future for Shutdown {
type Item = ();
type Error = ();
fn poll(&mut self) -> Poll<(), ()> {
use futures::task;
self.inner().shutdown_task.task.register_task(task::current());
if !self.inner().is_shutdown() {
return Ok(Async::NotReady);
}
Ok(().into())
}
}