client: implement close() to close inner stream

This commit is contained in:
Astro 2019-01-26 20:46:51 +01:00
parent 3586e5134d
commit 380bd2fc02

View file

@ -208,4 +208,19 @@ impl Sink for Client {
_ => Ok(Async::Ready(())),
}
}
/// This closes the inner TCP stream.
///
/// To synchronize your shutdown with the server side, you should
/// first send `Packet::StreamEnd` and wait it to be sent back
/// before closing the connection.
fn close(&mut self) -> Poll<(), Self::SinkError> {
match self.state {
ClientState::Connected(ref mut stream) =>
stream.close()
.map_err(|e| e.into()),
_ =>
Ok(Async::Ready(())),
}
}
}