From 18e944bd289bfd05aafd5ebefe10d7fc013f35fb Mon Sep 17 00:00:00 2001 From: Lucio Franco Date: Sat, 11 Jan 2020 12:27:00 -0800 Subject: [PATCH] chore: Update prost codec to not use workaround (#226) --- tonic/src/codec/prost.rs | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/tonic/src/codec/prost.rs b/tonic/src/codec/prost.rs index 08f464a..1c88e7c 100644 --- a/tonic/src/codec/prost.rs +++ b/tonic/src/codec/prost.rs @@ -1,6 +1,6 @@ use super::{Codec, Decoder, Encoder}; use crate::{Code, Status}; -use bytes::{Buf, BufMut, BytesMut}; +use bytes::BytesMut; use prost::Message; use std::marker::PhantomData; @@ -45,19 +45,9 @@ impl Encoder for ProstEncoder { type Error = Status; fn encode(&mut self, item: Self::Item, buf: &mut BytesMut) -> Result<(), Self::Error> { - let len = item.encoded_len(); - - if buf.remaining_mut() < len { - buf.reserve(len); - } - - let mut v = Vec::with_capacity(len); - - item.encode(&mut v) + item.encode(buf) .expect("Message only errors if not enough space"); - buf.extend(v); - Ok(()) } } @@ -71,18 +61,10 @@ impl Decoder for ProstDecoder { type Error = Status; fn decode(&mut self, buf: &mut BytesMut) -> Result, Self::Error> { - let mut cursor = std::io::Cursor::new(&buf[..]); - - let item = Message::decode(&mut cursor) + let item = Message::decode(buf) .map(Option::Some) .map_err(from_decode_error)?; - let amt = cursor.position() as usize; - - drop(cursor); - - buf.advance(amt); - Ok(item) } }