add streaming body to requests and responses #3

Merged
lx merged 64 commits from stream-body into main 2022-09-13 10:56:54 +00:00
2 changed files with 8 additions and 1 deletions
Showing only changes of commit b9df442f03 - Show all commits

View file

@ -52,7 +52,10 @@ where
T: EndpointHandler<M>, T: EndpointHandler<M>,
M: Message + 'static, M: Message + 'static,
{ {
async fn handle(self: &Arc<Self>, m: Req<M>, from: NodeID) -> Resp<M> { async fn handle(self: &Arc<Self>, mut m: Req<M>, from: NodeID) -> Resp<M> {
// Immediately drop stream to avoid backpressure if a stream was sent
// (this will make all data sent to the stream be ignored immediately)
drop(m.take_stream());
Resp::new(EndpointHandler::handle(self, m.msg(), from).await) Resp::new(EndpointHandler::handle(self, m.msg(), from).await)
} }
} }

View file

@ -81,6 +81,10 @@ impl<M: Message> Req<M> {
} }
} }
pub fn take_stream(&mut self) -> Option<ByteStream> {
std::mem::replace(&mut self.body, BodyData::None).into_stream()
}
pub(crate) fn into_enc( pub(crate) fn into_enc(
self, self,
prio: RequestPriority, prio: RequestPriority,