Files
Dispatch/Dispatch_V0.1.1/services/hardware_gateway.py
2026-04-29 08:18:54 +04:00

49 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
# hub/ticket/services/hardware_gateway.py
"""Публичный контракт аппаратного шлюза Ticket."""
from __future__ import annotations
from typing import Any, Mapping, Protocol
from domain import TicketHardwareStatus
class TicketHardwareObserver(Protocol):
"""Получатель событий от аппаратного или mock-шлюза."""
def on_task_action(self, raw_action: Mapping[str, Any]) -> None:
"""Принять внешнее действие по задаче."""
def on_gateway_status(self, status: TicketHardwareStatus) -> None:
"""Принять обновление статуса подключения и инициализации."""
def on_gateway_error(self, message: str) -> None:
"""Принять сообщение об ошибке шлюза."""
class TicketHardwareGateway(Protocol):
"""Минимальный публичный API сервиса ввода событий Ticket."""
def start(self) -> None:
"""Запустить внешний источник событий."""
def stop(self) -> None:
"""Остановить внешний источник событий."""
def get_status(self) -> TicketHardwareStatus:
"""Вернуть текущий статус шлюза."""
def set_observer(self, observer: TicketHardwareObserver | None) -> None:
"""Назначить получателя событий приложения."""
def set_button_state(self, button_id: int, state_code: int) -> None:
"""Синхронизировать каноническое состояние кнопки для аппаратного шлюза."""
def remove_button_state(self, button_id: int) -> None:
"""Удалить известное состояние кнопки из шлюза."""
def reset_button_states(self) -> None:
"""Сбросить все известные состояния кнопок при смене контекста."""