Skip to content

Commit 94fe964

Browse files
committed
This simple cognative leap fixes delay, switches not syncing, and transferring controls not working
1 parent f7cf846 commit 94fe964

3 files changed

Lines changed: 12 additions & 7 deletions

File tree

src/server/client.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ impl Client {
8484
break;
8585
}
8686
Ok(n) => {
87-
if let Some(data) = transfer.reader.try_read_string(&buf[0..n]) {
87+
transfer.reader.add_buf(&buf[0..n]);
88+
89+
while let Some(data) = transfer.reader.try_read_string() {
8890
// Deserialize json
8991
if let Ok(data) = process_message(&data, None) {
9092
transfer.server_tx.send(data).ok();

src/server/server.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,10 @@ impl Server {
239239
to_drop.push(index);
240240
}
241241
Ok(n) => {
242-
// Append bytes to reader
243-
if let Some(data_string) = client.reader.try_read_string(&buf[0..n]) {
244-
// Parse payload
242+
client.reader.add_buf(&buf[0..n]);
243+
244+
while let Some(data_string) = client.reader.try_read_string() {
245+
// Deserialize json
245246
if let Ok(data) = process_message(&data_string, Some(client.name.clone())) {
246247
to_write.push((index, data, data_string));
247248
}
@@ -331,7 +332,7 @@ impl Server {
331332
}
332333

333334
if should_stop {break}
334-
sleep(Duration::from_millis(10));
335+
sleep(Duration::from_millis(5));
335336
}
336337
});
337338
}

src/server/util.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,11 @@ impl PartialReader {
6868
}
6969
}
7070

71-
pub fn try_read_string(&mut self, buf: &[u8]) -> Option<String> {
71+
pub fn add_buf(&mut self, buf: &[u8]) {
7272
self.buffer.extend_from_slice(buf);
73-
73+
}
74+
75+
pub fn try_read_string(&mut self) -> Option<String> {
7476
if let Some(index) = self.buffer.iter().position(|&x| x == 0x0a) {
7577
let result_string = String::from_utf8(self.buffer[0..index + 1].to_vec()).unwrap();
7678
self.buffer.drain(0..index + 1);

0 commit comments

Comments
 (0)