# --------------------------------------------------------------------------- # LRU-Speicher (persistent via QSettings) # --------------------------------------------------------------------------- from PyQt5.QtCore import QSettings class LruStore: """Speichert bis zu max_size TCP-Verbindungen persistent (host:port).""" def __init__(self, max_size: int = 5): self._max = max_size self._cfg = QSettings("gnss_skyplot", "connections") def entries(self) -> list[str]: val = self._cfg.value("tcp_lru", []) if isinstance(val, str): val = [val] return val or [] def add(self, host: str, port: int) -> None: entry = f"{host}:{port}" entries = [e for e in self.entries() if e != entry] entries.insert(0, entry) self._cfg.setValue("tcp_lru", entries[: self._max]) self._cfg.sync() def clear(self) -> None: self._cfg.remove("tcp_lru") self._cfg.sync() def parse(self, entry: str) -> tuple[str, int]: host, port_str = entry.rsplit(":", 1) return host.strip(), int(port_str.strip())