34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
# ---------------------------------------------------------------------------
|
|
# 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())
|