diff --git a/util/fastcdc.rs b/util/fastcdc.rs index f220b9128..3cd572a57 100644 --- a/util/fastcdc.rs +++ b/util/fastcdc.rs @@ -4,7 +4,7 @@ // This implementation is heavily based on: // https://github.com/nlfiedler/fastcdc-rs/blob/1e804fe27444e37b2c4f93d540f861d170c8a257/src/lib.rs -use bytes::BytesMut; +use bytes::{Bytes, BytesMut}; use tokio_util::codec::Decoder; struct State { @@ -80,7 +80,7 @@ impl FastCDC { } impl Decoder for FastCDC { - type Item = BytesMut; + type Item = Bytes; type Error = std::io::Error; fn decode(&mut self, buf: &mut BytesMut) -> Result, Self::Error> { @@ -120,14 +120,14 @@ impl Decoder for FastCDC { split_point, self.max_size ); - return Ok(Some(buf.split_to(split_point))); + return Ok(Some(buf.split_to(split_point).freeze())); } self.state.position = split_point; if self.state.position == 0 { self.state.position = buf.len(); } - return Ok(None); + Ok(None) } fn decode_eof(&mut self, buf: &mut BytesMut) -> Result, Self::Error> { @@ -140,7 +140,7 @@ impl Decoder for FastCDC { // If our buffer is empty we don't have any more data. return Ok(None); } - Ok(Some(buf.split())) + Ok(Some(buf.split().freeze())) } } } diff --git a/util/tests/fastcdc_test.rs b/util/tests/fastcdc_test.rs index adb18dd16..bbf813291 100644 --- a/util/tests/fastcdc_test.rs +++ b/util/tests/fastcdc_test.rs @@ -6,7 +6,7 @@ use std::collections::{HashMap, HashSet}; use std::io::Cursor; use std::marker::Unpin; -use bytes::BytesMut; +use bytes::Bytes; use futures::stream::StreamExt; use rand::{rngs::SmallRng, Rng, SeedableRng}; use sha2::{Digest, Sha256}; @@ -108,7 +108,7 @@ mod fastcdc_tests { let fast_cdc = FastCDC::new(1024, 2048, 4096); let left_frames = { let mut frame_reader = FramedRead::new(Cursor::new(&rand_data), fast_cdc.clone()); - let frames: Vec = get_frames(&mut frame_reader).await?; + let frames: Vec = get_frames(&mut frame_reader).await?; let mut frames_map = HashMap::new(); let mut pos = 0; @@ -129,7 +129,7 @@ mod fastcdc_tests { let mut right_frames = { let mut frame_reader = FramedRead::new(Cursor::new(&rand_data), fast_cdc.clone()); - let frames: Vec = get_frames(&mut frame_reader).await?; + let frames: Vec = get_frames(&mut frame_reader).await?; let mut frames_map = HashMap::new(); let mut pos = 0;