From 5a1aa792165c17739d160f4ac2ad0a1937e0de33 Mon Sep 17 00:00:00 2001 From: Thastertyn Date: Sun, 26 Jan 2025 18:26:07 +0100 Subject: [PATCH] Started work on core exceptions and request type --- README.md | 2 +- src/bank_node/bank_node.py | 17 ++++++++++------- src/core/exceptions.py | 13 +++++++++++++ src/core/request.py | 10 ++++++++++ src/utils/__init__.py | 5 +++++ src/utils/{setup_logger.py => logger.py} | 3 +++ 6 files changed, 42 insertions(+), 8 deletions(-) rename src/utils/{setup_logger.py => logger.py} (90%) diff --git a/README.md b/README.md index 4ff872a..4dbd2df 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ## Sources ### Signal catching -- [Catch SIGTERM](https://stackoverflow.com/a/31464349) +- [Catch SIGTERM](https://dnmtechs.com/graceful-sigterm-signal-handling-in-python-3-best-practices-and-implementation/) - [Get ENUM name from value](https://stackoverflow.com/a/38716384) ### Networking diff --git a/src/bank_node/bank_node.py b/src/bank_node/bank_node.py index f66d6e1..0fd6108 100644 --- a/src/bank_node/bank_node.py +++ b/src/bank_node/bank_node.py @@ -3,10 +3,14 @@ import signal import sys import logging + from core.config import BankNodeConfig +from utils import setup_logger + class BankNode(): def __init__(self): + setup_logger() self.logger = logging.getLogger(__name__) self._setup_signals() self.config = BankNodeConfig() @@ -16,13 +20,6 @@ class BankNode(): signal.signal(signal.SIGTERM, self.gracefully_exit) signal.signal(signal.SIGINT, self.gracefully_exit) - def gracefully_exit(self, signum, frame): - signal_name = signal.Signals(signum).name - self.logger.warning("Caught %s. Cleaning up before exiting", signal_name) - self.cleanup() - sys.exit(0) - - def start_server(self): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as socket_server: socket_server.bind(("127.0.0.1", 6969)) @@ -37,3 +34,9 @@ class BankNode(): def cleanup(self): pass + + def gracefully_exit(self, signum, frame): + signal_name = signal.Signals(signum).name + self.logger.warning("Caught %s. Cleaning up before exiting", signal_name) + self.cleanup() + sys.exit(0) diff --git a/src/core/exceptions.py b/src/core/exceptions.py index e69de29..add9c37 100644 --- a/src/core/exceptions.py +++ b/src/core/exceptions.py @@ -0,0 +1,13 @@ +class BankProtocolError(Exception): + def __init__(self, message): + super().__init__(message) + self.message = message + + +class InvalidRequest(BankProtocolError): + def __init__(self, message): + super().__init__(message) + self.message = message + + +__all__ = ["BankProtocolError", "InvalidRequest"] diff --git a/src/core/request.py b/src/core/request.py index e69de29..61c0f25 100644 --- a/src/core/request.py +++ b/src/core/request.py @@ -0,0 +1,10 @@ +from core.exceptions import * + + +class Request(): + def __init__(self, raw_request): + try: + self.command_code = raw_request[0:1] + self.body = raw_request[2:-1] + except IndexError: + pass diff --git a/src/utils/__init__.py b/src/utils/__init__.py index e69de29..559dc12 100644 --- a/src/utils/__init__.py +++ b/src/utils/__init__.py @@ -0,0 +1,5 @@ +from .logger import * + +__all__ = [ + *logger.__all__ +] diff --git a/src/utils/setup_logger.py b/src/utils/logger.py similarity index 90% rename from src/utils/setup_logger.py rename to src/utils/logger.py index cf153be..00aa200 100644 --- a/src/utils/setup_logger.py +++ b/src/utils/logger.py @@ -11,3 +11,6 @@ def setup_logger(): handler.setFormatter(formatter) logger.addHandler(handler) + + +__all__ = ["setup_logger"]