Compare commits
8 Commits
0.1.0
...
bce62f6973
| Author | SHA1 | Date | |
|---|---|---|---|
|
bce62f6973
|
|||
|
6953922b3b
|
|||
|
c63b7f9f4d
|
|||
|
30b2305dd1
|
|||
|
a25908bf46
|
|||
|
8d06775c27
|
|||
|
5d5dbd371f
|
|||
|
6efc7754f9
|
@@ -16,6 +16,9 @@ license = { text = "GPL-3.0+" }
|
|||||||
|
|
||||||
[dependency-groups]
|
[dependency-groups]
|
||||||
bump = ["git-cliff>=2.9.1", "python-semantic-release>=10.2.0"]
|
bump = ["git-cliff>=2.9.1", "python-semantic-release>=10.2.0"]
|
||||||
|
lint = [
|
||||||
|
"isort>=6.0.1",
|
||||||
|
]
|
||||||
test = [
|
test = [
|
||||||
"pytest>=4.2.1",
|
"pytest>=4.2.1",
|
||||||
"pytest-cov>=6.2.1",
|
"pytest-cov>=6.2.1",
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|
||||||
import logging as lg
|
import logging as lg
|
||||||
|
|
||||||
from judas_client.connector import Connector
|
from judas_client.connector import Connector
|
||||||
|
|||||||
@@ -2,10 +2,9 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import logging as lg
|
import logging as lg
|
||||||
|
|
||||||
import socket
|
import socket
|
||||||
import uuid
|
|
||||||
import time
|
import time
|
||||||
|
import uuid
|
||||||
|
|
||||||
from judas_protocol import Message
|
from judas_protocol import Message
|
||||||
|
|
||||||
@@ -98,19 +97,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}")
|
||||||
|
while True:
|
||||||
try:
|
try:
|
||||||
self.socket.sendall(data)
|
self.socket.sendall(data)
|
||||||
|
|
||||||
|
if no_check_ack:
|
||||||
|
self.logger.debug("[>] Data sent without ACK check")
|
||||||
|
break
|
||||||
|
else:
|
||||||
self.logger.info("[>] Data sent")
|
self.logger.info("[>] Data sent")
|
||||||
self._send_ack()
|
|
||||||
|
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:
|
except BrokenPipeError as e:
|
||||||
self.logger.error(f"[!] Broken pipe: {e}")
|
self.logger.error(f"[!] Broken pipe: {e}")
|
||||||
self.logger.info("[.] Reconnecting...")
|
self.logger.info("[.] Reconnecting...")
|
||||||
self.connect()
|
self.connect()
|
||||||
self.send(data)
|
|
||||||
except (socket.error, ValueError) as e:
|
except (socket.error, ValueError) as e:
|
||||||
self.logger.error(f"[!] Failed to send data: {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 +155,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:
|
||||||
|
|||||||
13
uv.lock
generated
13
uv.lock
generated
@@ -226,6 +226,15 @@ wheels = [
|
|||||||
{ url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" },
|
{ url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" },
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "isort"
|
||||||
|
version = "6.0.1"
|
||||||
|
source = { registry = "https://pypi.org/simple" }
|
||||||
|
sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955, upload-time = "2025-02-26T21:13:16.955Z" }
|
||||||
|
wheels = [
|
||||||
|
{ url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186, upload-time = "2025-02-26T21:13:14.911Z" },
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jinja2"
|
name = "jinja2"
|
||||||
version = "3.1.6"
|
version = "3.1.6"
|
||||||
@@ -251,6 +260,9 @@ bump = [
|
|||||||
{ name = "git-cliff" },
|
{ name = "git-cliff" },
|
||||||
{ name = "python-semantic-release" },
|
{ name = "python-semantic-release" },
|
||||||
]
|
]
|
||||||
|
lint = [
|
||||||
|
{ name = "isort" },
|
||||||
|
]
|
||||||
test = [
|
test = [
|
||||||
{ name = "pytest" },
|
{ name = "pytest" },
|
||||||
{ name = "pytest-cov" },
|
{ name = "pytest-cov" },
|
||||||
@@ -266,6 +278,7 @@ bump = [
|
|||||||
{ name = "git-cliff", specifier = ">=2.9.1" },
|
{ name = "git-cliff", specifier = ">=2.9.1" },
|
||||||
{ name = "python-semantic-release", specifier = ">=10.2.0" },
|
{ name = "python-semantic-release", specifier = ">=10.2.0" },
|
||||||
]
|
]
|
||||||
|
lint = [{ name = "isort", specifier = ">=6.0.1" }]
|
||||||
test = [
|
test = [
|
||||||
{ name = "pytest", specifier = ">=4.2.1" },
|
{ name = "pytest", specifier = ">=4.2.1" },
|
||||||
{ name = "pytest-cov", specifier = ">=6.2.1" },
|
{ name = "pytest-cov", specifier = ">=6.2.1" },
|
||||||
|
|||||||
Reference in New Issue
Block a user