Compare commits
5 Commits
0.1.0
...
30b2305dd1
| Author | SHA1 | Date | |
|---|---|---|---|
|
30b2305dd1
|
|||
|
a25908bf46
|
|||
|
8d06775c27
|
|||
|
5d5dbd371f
|
|||
|
6efc7754f9
|
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user