feat(server): add try_into_parts() to conn::Connection (#1531)

This commit is contained in:
Yusuke Sasaki
2018-06-04 04:43:04 +09:00
committed by Sean McArthur
parent c6e90b7b65
commit c615a3242f

View File

@@ -342,20 +342,28 @@ where
/// This should only be called after `poll_without_shutdown` signals /// This should only be called after `poll_without_shutdown` signals
/// that the connection is "done". Otherwise, it may not have finished /// that the connection is "done". Otherwise, it may not have finished
/// flushing all necessary HTTP bytes. /// flushing all necessary HTTP bytes.
///
/// # Panics
/// This method will panic if this connection is using an h2 protocol.
pub fn into_parts(self) -> Parts<I, S> { pub fn into_parts(self) -> Parts<I, S> {
let (io, read_buf, dispatch) = match self.conn.unwrap() { self.try_into_parts().unwrap_or_else(|| panic!("h2 cannot into_inner"))
}
/// Return the inner IO object, and additional information, if available.
///
/// This method will return a `None` if this connection is using an h2 protocol.
pub fn try_into_parts(self) -> Option<Parts<I, S>> {
match self.conn.unwrap() {
Either::A(h1) => { Either::A(h1) => {
h1.into_inner() let (io, read_buf, dispatch) = h1.into_inner();
Some(Parts {
io: io,
read_buf: read_buf,
service: dispatch.into_service(),
_inner: (),
})
}, },
Either::B(_h2) => { Either::B(_h2) => None,
panic!("h2 cannot into_inner");
}
};
Parts {
io: io,
read_buf: read_buf,
service: dispatch.into_service(),
_inner: (),
} }
} }