refactored heavily
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# 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())
|
||||
Reference in New Issue
Block a user