From 882c8780e15ec827fac1854cf7419b71d9a41a4f Mon Sep 17 00:00:00 2001 From: Artur Borecki Date: Tue, 3 Mar 2026 18:50:57 +0100 Subject: [PATCH] feat(base_handler.py): add `BaseHandler` class for message handling --- .../backend/handler/base_handler.py | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/judas_server/backend/handler/base_handler.py diff --git a/src/judas_server/backend/handler/base_handler.py b/src/judas_server/backend/handler/base_handler.py new file mode 100644 index 0000000..e7dfa8c --- /dev/null +++ b/src/judas_server/backend/handler/base_handler.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +from __future__ import annotations + +import logging as lg +from typing import TYPE_CHECKING + +from judas_server.backend.client import Client + +if TYPE_CHECKING: + from judas_protocol import Message + + from judas_server.backend import BackendServer + + +class BaseHandler: + """BaseHandler is the base class for all message handlers in the backend server. + + It defines the interface for handling messages and provides common functionality for all handlers. + """ + + def __init__(self, backend_server: BackendServer) -> None: + """Initialize the BaseHandler with a reference to the backend server. + + Args: + backend_server (BackendServer): The backend server instance that this handler belongs to. + """ + self.logger: lg.Logger = lg.getLogger( + f"{__name__}.{self.__class__.__name__}" + ) + self.backend_server: BackendServer = backend_server + + def handle(self, client: Client, message: Message) -> None: + """Handle a message from a client. + + This method must be implemented by subclasses to define the specific handling logic for different message types. + + Args: + client (Client): The client that sent the message. + message (Message): The message to be handled. + """ + raise NotImplementedError("handle() must be implemented by subclasses")