diff --git a/src/recorder.py b/src/recorder.py index 9c58c8e..f2f9b88 100644 --- a/src/recorder.py +++ b/src/recorder.py @@ -28,6 +28,7 @@ class RecorderClient(QObject): socket.AF_INET, socket.SOCK_STREAM) self.timer: Optional[QTimer] = None self.connected: bool = False + self.buffer: bytes = b"" @pyqtSlot() def start(self): @@ -40,27 +41,27 @@ class RecorderClient(QObject): print("Connected to server") def poll_socket(self): - buffer: bytes = b"" if not self.connected: return try: - chunk: bytes = self.socket.recv(self.DATA_CHUNK_SIZE) - if not chunk: - return - buffer += chunk - while True: - if len(buffer) < 4: - break - msg_len: int = struct.unpack(">I", buffer[:4])[0] - msg_end: int = 4 + msg_len - if len(buffer) < msg_end: - break + chunk: bytes = self.socket.recv(self.DATA_CHUNK_SIZE) + if not chunk: + return + self.buffer += chunk - message: bytes = buffer[4:msg_end] - buffer = buffer[msg_end:] - self.on_message(message) + while True: + if len(self.buffer) < 4: + break + msg_len: int = struct.unpack(">I", self.buffer[:4])[0] + msg_end: int = 4 + msg_len + if len(self.buffer) < msg_end: + break + + message: bytes = self.buffer[4:msg_end] + self.buffer = self.buffer[msg_end:] + self.on_message(message) except BlockingIOError: pass except Exception as e: diff --git a/src/snapshot.py b/src/snapshot.py index e519290..03ab165 100644 --- a/src/snapshot.py +++ b/src/snapshot.py @@ -63,7 +63,7 @@ class Snapshot: (nbr_raycasts,), data = iter_unpack(">B", data) raycast_distances, data = iter_unpack(f">{nbr_raycasts}f", data) - (h, w), data = iter_unpack(">ii", data) + (h, w), data = iter_unpack(">II", data) if h * w > 0: image = np.frombuffer(data, np.uint8).reshape(h, w, 3)