Files
evotraders/backend/process/registry.py
2026-03-30 17:46:44 +08:00

36 lines
943 B
Python

# -*- coding: utf-8 -*-
"""Registry for managing supervised process metadata."""
from threading import Lock
from typing import Dict, Iterable, Optional
from .models import ProcessRun
class RunRegistry:
"""In-memory registry for tracked process runs."""
def __init__(self) -> None:
self._runs: Dict[str, ProcessRun] = {}
self._lock = Lock()
def add(self, run: ProcessRun) -> None:
with self._lock:
self._runs[run.run_id] = run
def get(self, run_id: str) -> Optional[ProcessRun]:
with self._lock:
return self._runs.get(run_id)
def list(self) -> Iterable[ProcessRun]:
with self._lock:
return list(self._runs.values())
def update(self, run: ProcessRun) -> None:
with self._lock:
self._runs[run.run_id] = run
def remove(self, run_id: str) -> None:
with self._lock:
self._runs.pop(run_id, None)