Remove copy of serialized thing in encode

This commit is contained in:
Alex 2022-07-22 14:38:03 +02:00
parent 50358b944a
commit 4825669293
Signed by untrusted user: lx
GPG key ID: 0E496D15096376BE

View file

@ -313,14 +313,13 @@ impl ReqEnc {
buf.put(&self.telemetry_id[..]); buf.put(&self.telemetry_id[..]);
buf.put_u32(self.msg.len() as u32); buf.put_u32(self.msg.len() as u32);
buf.put(&self.msg[..]);
let header = buf.freeze(); let header = buf.freeze();
if let Some(stream) = self.stream { if let Some(stream) = self.stream {
Box::pin(futures::stream::once(async move { Ok(header) }).chain(stream)) Box::pin(futures::stream::iter([Ok(header), Ok(self.msg)]).chain(stream))
} else { } else {
Box::pin(futures::stream::once(async move { Ok(header) })) Box::pin(futures::stream::iter([Ok(header), Ok(self.msg)]))
} }
} }
@ -387,16 +386,14 @@ impl RespEnc {
let mut buf = BytesMut::with_capacity(msg.len() + 8); let mut buf = BytesMut::with_capacity(msg.len() + 8);
buf.put_u8(0); buf.put_u8(0);
buf.put_u32(msg.len() as u32); buf.put_u32(msg.len() as u32);
buf.put(&msg[..]);
let header = buf.freeze(); let header = buf.freeze();
if let Some(stream) = stream { if let Some(stream) = stream {
Box::pin(futures::stream::once(async move { Ok(header) }).chain(stream)) Box::pin(futures::stream::iter([Ok(header), Ok(msg)]).chain(stream))
} else { } else {
Box::pin(futures::stream::once(async move { Ok(header) })) Box::pin(futures::stream::iter([Ok(header), Ok(msg)]))
} }
} }
RespEnc::Error { code, message } => { RespEnc::Error { code, message } => {