Compare commits

5 Commits

View File

@@ -98,19 +98,34 @@ class Connector:
time.sleep(retry_interval) time.sleep(retry_interval)
self.connect(retry_interval=min(30, retry_interval * 2)) self.connect(retry_interval=min(30, retry_interval * 2))
def send(self, data: bytes) -> None: def send(self, data: bytes, no_check_ack: bool = False) -> None:
self.logger.debug(f"[>] Sending data: {data}") self.logger.debug(f"[>] Sending data: {data}")
try: while True:
self.socket.sendall(data) try:
self.logger.info("[>] Data sent") self.socket.sendall(data)
self._send_ack()
except BrokenPipeError as e: if no_check_ack:
self.logger.error(f"[!] Broken pipe: {e}") self.logger.debug("[>] Data sent without ACK check")
self.logger.info("[.] Reconnecting...") break
self.connect() else:
self.send(data) self.logger.info("[>] Data sent")
except (socket.error, ValueError) as e:
self.logger.error(f"[!] Failed to send data: {e}") acknowledged: bool = self._check_ack()
if acknowledged:
self.logger.debug("[.] Data acknowledged")
break
else:
self.logger.warning(
"[!] Data not acknowledged, retrying..."
)
except BrokenPipeError as e:
self.logger.error(f"[!] Broken pipe: {e}")
self.logger.info("[.] Reconnecting...")
self.connect()
except (socket.error, ValueError) as e:
self.logger.error(f"[!] Failed to send data: {e}")
time.sleep(1)
def receive(self) -> bytes: def receive(self) -> bytes:
self.logger.debug("[.] Waiting to receive data...") self.logger.debug("[.] Waiting to receive data...")
@@ -141,7 +156,7 @@ class Connector:
hello_message: Message = Message.hello(self.mac_address) hello_message: Message = Message.hello(self.mac_address)
acknowledged: bool = False acknowledged: bool = False
while not acknowledged: while not acknowledged:
self.send(hello_message.to_bytes()) self.send(hello_message.to_bytes(), no_check_ack=True)
self.logger.debug("[.] Hello message sent, waiting for ACK...") self.logger.debug("[.] Hello message sent, waiting for ACK...")
acknowledged = self._check_ack() acknowledged = self._check_ack()
if not acknowledged: if not acknowledged: