Compare commits

..

5 Commits

View File

@@ -98,19 +98,34 @@ class Connector:
time.sleep(retry_interval)
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}")
try:
self.socket.sendall(data)
self.logger.info("[>] Data sent")
self._send_ack()
except BrokenPipeError as e:
self.logger.error(f"[!] Broken pipe: {e}")
self.logger.info("[.] Reconnecting...")
self.connect()
self.send(data)
except (socket.error, ValueError) as e:
self.logger.error(f"[!] Failed to send data: {e}")
while True:
try:
self.socket.sendall(data)
if no_check_ack:
self.logger.debug("[>] Data sent without ACK check")
break
else:
self.logger.info("[>] Data sent")
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:
self.logger.debug("[.] Waiting to receive data...")
@@ -141,7 +156,7 @@ class Connector:
hello_message: Message = Message.hello(self.mac_address)
acknowledged: bool = False
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...")
acknowledged = self._check_ack()
if not acknowledged: