feat(client.py): add Client class

This commit is contained in:
2025-09-22 21:09:45 +02:00
parent b9d0fd92a6
commit 21bc86fa8a

View File

@@ -0,0 +1,67 @@
# -*- coding: utf-8 -*-
"""Client module for handling messages."""
from __future__ import annotations
import logging as lg
import uuid
from judas_protocol import Message
from judas_client import Connector
class Client:
"""Client class for handling messages."""
def __init__(self, server_host: str, server_port: int) -> None:
"""Initialize the Client.
Args:
server_host (str): The server host address.
server_port (int): The server port number.
"""
self.logger: lg.Logger = lg.getLogger(
f"{__name__}.{self.__class__.__name__}"
)
self.logger.debug("Initializing Client...")
self.server_host: str = server_host
self.server_port: int = server_port
self.mac_address: str = self._get_mac_address()
self.logger.debug(f"MAC address: {self.mac_address}")
self.connector: Connector = Connector(
mac_address=self.mac_address,
host=self.server_host,
port=self.server_port,
on_message=self.handle_message,
)
def _get_mac_address(self) -> str:
"""Get the MAC address of the client.
Returns:
str: The MAC address in standard lowercase format (e.g., "0a:1b:2c:3d:4e:5f").
"""
mac_address: str = ":".join(
[
"{:02x}".format((uuid.getnode() >> ele) & 0xFF)
for ele in range(0, 8 * 6, 8)
][::-1]
)
return mac_address
def handle_message(self, message: Message) -> None:
"""Handle incoming messages.
Args:
message (Message): The incoming message to handle.
"""
self.logger.info(f"[v] Received message: {message}")
def run(self) -> None:
"""Run the client."""
self.logger.info(f"Starting Client ({self.mac_address})...")
self.connector.run()