Spaces:
Running
Running
| """ProxyRuntime — thin hot-path wrapper around ProxyDirectory. | |
| Delegates acquisition and feedback to the control-plane ProxyDirectory. | |
| Kept as a thin shim so callers in the dataplane need not import control | |
| modules directly. | |
| """ | |
| from app.control.proxy import ProxyDirectory, get_proxy_directory | |
| from app.control.proxy.models import ( | |
| ProxyLease, ProxyFeedback, ProxyScope, RequestKind, | |
| ) | |
| class ProxyRuntime: | |
| """Hot-path facade around ProxyDirectory.""" | |
| def __init__(self, directory: ProxyDirectory) -> None: | |
| self._dir = directory | |
| async def acquire( | |
| self, | |
| *, | |
| scope: ProxyScope = ProxyScope.APP, | |
| kind: RequestKind = RequestKind.HTTP, | |
| resource: bool = False, | |
| clearance_origin: str | None = None, | |
| ) -> ProxyLease: | |
| return await self._dir.acquire( | |
| scope=scope, | |
| kind=kind, | |
| resource=resource, | |
| clearance_origin=clearance_origin, | |
| ) | |
| async def feedback(self, lease: ProxyLease, result: ProxyFeedback) -> None: | |
| await self._dir.feedback(lease, result) | |
| def has_proxy(self) -> bool: | |
| from app.control.proxy.models import EgressMode | |
| return self._dir.egress_mode != EgressMode.DIRECT | |
| _runtime: ProxyRuntime | None = None | |
| async def get_proxy_runtime() -> ProxyRuntime: | |
| global _runtime | |
| directory = await get_proxy_directory() | |
| if _runtime is None: | |
| _runtime = ProxyRuntime(directory) | |
| return _runtime | |
| __all__ = ["ProxyRuntime", "get_proxy_runtime"] | |