From 3658f050584831cc8142bd67edf17ab0421ce6d0 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Sat, 23 Dec 2023 12:51:03 +0000 Subject: [PATCH] Process raw stream data into UTF-8 lines. --- src/main.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 550e9da..9ea485a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,11 +16,30 @@ fn main() -> Result<(), mastodonochrome::OurError> { Ok(d) => Ok(d), }?; + let mut vec: Vec = Vec::new(); + const BUFSIZE: usize = 4096; let mut buf: [u8; BUFSIZE] = [0; BUFSIZE]; while let Ok(sz) = rsp.read(&mut buf) { let read = &buf[..sz]; - dbg!(read); + vec.extend_from_slice(read); + vec = 'outer: loop { + for line in vec.split_inclusive(|c| *c == 10) { + if !line.ends_with(&[10]) { + let mut newvec = Vec::new(); + newvec.extend_from_slice(line); + break 'outer newvec; + } else { + match std::str::from_utf8(&line) { + Err(e) => { dbg!(e); () }, + Ok(d) => { dbg!(d); () }, + }; + } + } + // If we didn't get a partial line inside the loop, then + // we must have an empty buffer here + break Vec::new(); + }; } Ok(()) -- 2.30.2