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)
|
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:
|
||||||
|
|||||||
Reference in New Issue
Block a user