MessageLogger¶
Ring-buffer для MQTT-сообщений (входящих и исходящих) плюс real-time fan-out подписчикам через WebSocket (DevTools panel).
Извлечён из SberBridge в v1.25.1. Сохраняет последние maxlen сообщений
в collections.deque, поддерживает subscribe(callback) → возвращает
unsubscribe callable, и resize(new_maxlen) для runtime-изменения
размера буфера.
MQTT message ring-buffer logger with real-time subscriber support.
Extracted from SberBridge to isolate DevTools logging from bridge core
logic (SRP). MessageLogger stores the last maxlen messages in a
deque and fans them out to any number of subscriber callbacks for
WebSocket push.
MessageLogger
¶
Ring-buffer logger for MQTT messages (incoming and outgoing).
Initialize the logger with a ring-buffer of the given size.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
maxlen
|
int
|
Maximum number of messages kept in the ring buffer. |
required |
Source code in custom_components/sber_mqtt_bridge/message_logger.py
resize
¶
Replace the underlying deque with a new one of the requested size.
Keeps the most recent new_maxlen entries.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_maxlen
|
int
|
New ring-buffer capacity. |
required |
Source code in custom_components/sber_mqtt_bridge/message_logger.py
log
¶
Append a message to the ring buffer and notify subscribers.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
direction
|
str
|
Either |
required |
topic
|
str
|
MQTT topic string. |
required |
payload
|
str
|
Decoded payload (may be raw text for debugging). |
required |
Source code in custom_components/sber_mqtt_bridge/message_logger.py
clear
¶
subscribe
¶
Subscribe to new messages in real time.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
callback_fn
|
Callable[[dict], None]
|
Function called with each new message dict. |
required |
Returns:
| Type | Description |
|---|---|
Callable[[], None]
|
Unsubscribe callable — invoke once to detach the listener. |