refactor(http): reduce complexity of Conn::start_send
This commit is contained in:
		| @@ -213,7 +213,7 @@ where I: AsyncRead + AsyncWrite, | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn write_head(&mut self, mut head: http::MessageHead<T::Outgoing>, body: bool) -> StartSend<http::MessageHead<T::Outgoing>,io::Error> { |     fn write_head(&mut self, mut head: http::MessageHead<T::Outgoing>, body: bool) { | ||||||
|         debug_assert!(self.can_write_head()); |         debug_assert!(self.can_write_head()); | ||||||
|         if !body { |         if !body { | ||||||
|             head.headers.remove::<TransferEncoding>(); |             head.headers.remove::<TransferEncoding>(); | ||||||
| @@ -233,8 +233,6 @@ where I: AsyncRead + AsyncWrite, | |||||||
|         } else { |         } else { | ||||||
|             Writing::KeepAlive |             Writing::KeepAlive | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         Ok(AsyncSink::Ready) |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     fn write_body(&mut self, chunk: Option<B>) -> StartSend<Option<B>, io::Error> { |     fn write_body(&mut self, chunk: Option<B>) -> StartSend<Option<B>, io::Error> { | ||||||
| @@ -382,24 +380,15 @@ where I: AsyncRead + AsyncWrite, | |||||||
|     type SinkItem = Frame<http::MessageHead<T::Outgoing>, B, ::Error>; |     type SinkItem = Frame<http::MessageHead<T::Outgoing>, B, ::Error>; | ||||||
|     type SinkError = io::Error; |     type SinkError = io::Error; | ||||||
|  |  | ||||||
|  |     #[inline] | ||||||
|     fn start_send(&mut self, frame: Self::SinkItem) -> StartSend<Self::SinkItem, Self::SinkError> { |     fn start_send(&mut self, frame: Self::SinkItem) -> StartSend<Self::SinkItem, Self::SinkError> { | ||||||
|         trace!("Conn::start_send( frame={:?} )", DebugFrame(&frame)); |         trace!("Conn::start_send( frame={:?} )", DebugFrame(&frame)); | ||||||
|  |  | ||||||
|         let frame: Self::SinkItem = match frame { |         let frame: Self::SinkItem = match frame { | ||||||
|             Frame::Message { message: head, body } => { |             Frame::Message { message: head, body } => { | ||||||
|                 if self.can_write_head() { |                 if self.can_write_head() { | ||||||
|                     return self.write_head(head, body) |                     self.write_head(head, body); | ||||||
|                         .map(|async| { |                     return Ok(AsyncSink::Ready); | ||||||
|                             match async { |  | ||||||
|                                 AsyncSink::Ready => AsyncSink::Ready, |  | ||||||
|                                 AsyncSink::NotReady(head) => { |  | ||||||
|                                     AsyncSink::NotReady(Frame::Message { |  | ||||||
|                                         message: head, |  | ||||||
|                                         body: body, |  | ||||||
|                                     }) |  | ||||||
|                                 } |  | ||||||
|                             } |  | ||||||
|                         }) |  | ||||||
|                 } else { |                 } else { | ||||||
|                     Frame::Message { message: head, body: body } |                     Frame::Message { message: head, body: body } | ||||||
|                 } |                 } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user