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