FramedRead and FramedWrite
use tokio_util::codec::{FramedRead, FramedWrite};
use tokio_stream::StreamExt;
let (reader, writer) = stream.into_split();
let mut framed_read = FramedRead::new(reader, KvCodec);
let mut framed_write = FramedWrite::new(writer, KvCodec);
while let Some(msg) = framed_read.next().await {
let msg = msg?;
let response = handle(msg);
framed_write.send(response).await?;
}
FramedRead wraps a AsyncRead and emits complete decoded items. No manual buffering.