summaryrefslogtreecommitdiff
path: root/crates/renderer/src/fig.rs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2025-07-26 16:54:07 -0400
committerLLLL Colonq <llll@colonq>2025-07-26 16:54:07 -0400
commit86862272e9cdb7a8358db91ec4bea3edbacf2e97 (patch)
tree5e347bc8f5190921ac74f6d1870cc7e43a5c5d2d /crates/renderer/src/fig.rs
parentba1ff8e7e3ea915c6d673c05cdcdee10a9b5b9f0 (diff)
WIP
Diffstat (limited to 'crates/renderer/src/fig.rs')
-rw-r--r--crates/renderer/src/fig.rs58
1 files changed, 25 insertions, 33 deletions
diff --git a/crates/renderer/src/fig.rs b/crates/renderer/src/fig.rs
index 8023f01..a696a9a 100644
--- a/crates/renderer/src/fig.rs
+++ b/crates/renderer/src/fig.rs
@@ -99,11 +99,11 @@ impl BinaryClient {
mut state: BinaryClientState,
) -> BinaryClientState {
loop {
- let new_state = match state {
+ state = match state {
BinaryClientState::PartialEventLength { mut buf_len, mut buf } => {
buf_len += if let Some(x) = Self::read(reader, &mut buf[buf_len..]) {
x
- } else { break; };
+ } else { break BinaryClientState::PartialEventLength { buf_len, buf }; };
if buf_len == 4 {
let len = u32::from_le_bytes(buf) as usize;
BinaryClientState::PartialEvent {
@@ -111,28 +111,24 @@ impl BinaryClient {
buf_len: 0,
buf: vec![0; len],
}
- } else {
- BinaryClientState::PartialEventLength { buf_len, buf }
- }
+ } else { BinaryClientState::PartialEventLength { buf_len, buf } }
},
BinaryClientState::PartialEvent { len, mut buf_len, mut buf } => {
buf_len += if let Some(x) = Self::read(reader, &mut buf[buf_len..]) {
x
- } else { break; };
+ } else { break BinaryClientState::PartialEvent { len, buf_len, buf }; };
if buf_len == len {
BinaryClientState::PartialDataLength {
event: buf.clone(),
buf_len: 0,
buf: [0; 4],
}
- } else {
- BinaryClientState::PartialEvent { len, buf_len, buf }
- }
+ } else { BinaryClientState::PartialEvent { len, buf_len, buf } }
},
BinaryClientState::PartialDataLength { event, mut buf_len, mut buf } => {
buf_len += if let Some(x) = Self::read(reader, &mut buf[buf_len..]) {
x
- } else { break; };
+ } else { break BinaryClientState::PartialDataLength { event, buf_len, buf }; };
if buf_len == 4 {
let len = u32::from_le_bytes(buf) as usize;
BinaryClientState::PartialData {
@@ -141,41 +137,37 @@ impl BinaryClient {
buf_len: 0,
buf: vec![0; len],
}
- } else {
- BinaryClientState::PartialDataLength { event, buf_len, buf }
- }
+ } else { BinaryClientState::PartialDataLength { event, buf_len, buf } }
},
BinaryClientState::PartialData { event, len, mut buf_len, mut buf } => {
buf_len += if let Some(x) = Self::read(reader, &mut buf[buf_len..]) {
x
- } else { break; };
+ } else { break BinaryClientState::PartialData { event, len, buf_len, buf }; };
if buf_len == len {
BinaryClientState::Message {
event,
data: buf.clone(),
}
- } else {
- BinaryClientState::PartialData { event, len, buf_len, buf }
- }
+ } else { BinaryClientState::PartialData { event, len, buf_len, buf } }
},
- BinaryClientState::Message{..} => break,
+ st@BinaryClientState::Message{..} => break st,
};
- state = new_state;
- };
- state
+ }
}
pub fn pump(&mut self) -> Option<BinaryMessage> {
- None
- // loop {
- // if let Some(new) = self.update_state(mem::take(&mut self.state)) {
- // self.state = new;
- // } else { break; }
- // }
- // if let BinaryClientState::Message { event, data } = self.state.clone() {
- // self.state = BinaryClientState::PartialEventLength { buf_len: 0, buf: [0; 4] };
- // Some(BinaryMessage { event, data })
- // } else {
- // None
- // }
+ self.state = Self::update_state(&mut self.reader, std::mem::take(&mut self.state));
+ match std::mem::take(&mut self.state) {
+ BinaryClientState::Message { event, data } => {
+ self.state = BinaryClientState::PartialEventLength { buf_len: 0, buf: [0; 4] };
+ Some(BinaryMessage {
+ event: event,
+ data: data,
+ })
+ },
+ st => {
+ self.state = st;
+ None
+ }
+ }
}
}