diff --git a/src/judas_server/backend/handler/ack_handler.py b/src/judas_server/backend/handler/ack_handler.py new file mode 100644 index 0000000..8204be0 --- /dev/null +++ b/src/judas_server/backend/handler/ack_handler.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +from typing import TYPE_CHECKING + +from .base_handler import BaseHandler + +if TYPE_CHECKING: + from judas_protocol import Message + + from judas_server.backend import BackendServer, Client + + +class AckHandler(BaseHandler): + def __init__(self, backend_server: BackendServer) -> None: + super().__init__(backend_server) + + def handle(self, client: Client, message: Message) -> None: + pending_acks = self.backend_server.pending_acks + if message.id in pending_acks: + del pending_acks[message.id] + self.logger.debug( + f"[*] Received ACK for message {message.id} from {client}." + ) + else: + self.logger.warning( + f"[!] Received ACK for unknown (or ACK'd) message {message.id} from {client}." + )