Skip to content

Commit

Permalink
feat(server): add try_into_parts() to conn::Connection (#1531)
Browse files Browse the repository at this point in the history
  • Loading branch information
ubnt-intrepid authored and seanmonstar committed Jun 3, 2018
1 parent c6e90b7 commit c615a32
Showing 1 changed file with 19 additions and 11 deletions.
30 changes: 19 additions & 11 deletions src/server/conn.rs
Expand Up @@ -342,20 +342,28 @@ where
/// This should only be called after `poll_without_shutdown` signals
/// that the connection is "done". Otherwise, it may not have finished
/// 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> {
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) => {
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) => {
panic!("h2 cannot into_inner");
}
};
Parts {
io: io,
read_buf: read_buf,
service: dispatch.into_service(),
_inner: (),
Either::B(_h2) => None,
}
}

Expand Down

0 comments on commit c615a32

Please sign in to comment.