mirror of
https://github.com/hansjone/netx.git
synced 2026-10-09 05:30:46 +08:00
Keep the public facade stable and re-export shared mutable log/connection objects for existing tests. Co-authored-by: Cursor <cursoragent@cursor.com>
59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
"""Process-local mutable state for UME alarm WSS consumer."""
|
|
from __future__ import annotations
|
|
|
|
from collections import deque
|
|
import threading
|
|
from typing import Any
|
|
|
|
from .ume_client import UMEClient
|
|
|
|
_WS_ALARM_ACTION_LABEL: dict[str, str] = {
|
|
"inserted": "上报(新增)",
|
|
"updated": "上报(更新)",
|
|
"deleted": "清除",
|
|
"skipped": "忽略",
|
|
}
|
|
|
|
_WS_LOG_LOCK = threading.Lock()
|
|
_WS_LOG_ENTRIES: deque[dict[str, Any]] = deque(maxlen=200)
|
|
_WS_LOG_MAX_RETURN = 100
|
|
|
|
_LOG_DEDUP_LOCK = threading.Lock()
|
|
_LOG_DEDUP_CACHE: dict[str, tuple[float, int]] = {}
|
|
_LOG_DEDUP_MAX_KEYS = 256
|
|
_WS_NOTIFY_LOCK = threading.Lock()
|
|
_WS_NOTIFY_LAST_KEY = ""
|
|
_WS_NOTIFY_LAST_TS = 0.0
|
|
_WS_NOTIFY_COOLDOWN_S = 45.0
|
|
_LOOP_STATUS_COOLDOWN_S = 60.0
|
|
_WS_IGNORE_COOLDOWN_S = 60.0
|
|
|
|
_STARTUP_ALARM_SYNC_GATE = threading.Event()
|
|
|
|
_shutdown_lock = threading.Lock()
|
|
_subscription_lock = threading.Lock()
|
|
_ws_wake_event = threading.Event()
|
|
_ws_connection_lock = threading.Lock()
|
|
|
|
_subscription_id: str = ""
|
|
_subscription_uri: str = ""
|
|
_subscription_topic: str = "ALARM"
|
|
_active_client: UMEClient | None = None
|
|
_ws_connection_state: str = "init"
|
|
_ws_connection_detail: str = ""
|
|
_ume_lost_lock = threading.Lock()
|
|
_ume_subscription_lost = False
|
|
_ume_subscription_lost_reason: str = ""
|
|
|
|
_WS_CONNECTION_LABELS: dict[str, str] = {
|
|
"init": "初始化",
|
|
"connected": "已连接",
|
|
"connecting": "连接中",
|
|
"disconnected": "已断开",
|
|
"no_subscription": "无订阅",
|
|
"waiting_token": "等待 token",
|
|
"paused": "已暂停",
|
|
"error": "连接异常",
|
|
"reconnecting": "重连等待",
|
|
"subscription_lost": "UME订阅已丢失",
|
|
}
|