🎉 Initial commit

This commit is contained in:
Jonas Bengtsson
2026-10-07 10:38:21 +02:00
commit 1c64aeb071
38 changed files with 3391 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
"""The poll loop on the single dedicated COM thread (SPECIFICATION §10.3).
Phase 1 (IMPLEMENTATION_PLAN §4.7): connect → poll loop → feed detectors, plus
the hang watchdog (SPECIFICATION §10.4): a second thread timestamps poll
starts/ends; when a call exceeds ``hard_hang_s`` the stuck COM thread is
abandoned and a fresh connection is built on a new thread.
"""
from __future__ import annotations
from opcda_diagnozer.config import Config
from opcda_diagnozer.opc.base import OpcClient
class Poller:
"""Drives one :class:`OpcClient` on its own thread — implemented in Phase 1."""
def __init__(self, client: OpcClient, config: Config) -> None:
self._client = client
self._config = config
def run_forever(self) -> None:
raise NotImplementedError(
"Phase 1: poller + hang watchdog (docs/IMPLEMENTATION_PLAN.md §4.7)"
)