YuvarajDeveloper's picture
Prepare NetGuard for Hugging Face Space
da1daac
Raw
History Blame Contribute Delete
921 Bytes
from collections import deque
from dataclasses import dataclass, field
from datetime import datetime
from typing import Any, Deque, Dict, Optional
from websocket import manager as ws_manager
@dataclass
class NS3State:
socket_path: str = ""
server_available: bool = False
client_connected: bool = False
total_messages: int = 0
total_flows: int = 0
last_event_at: Optional[str] = None
last_flow_at: Optional[str] = None
last_error: Optional[str] = None
events: Deque[Dict[str, Any]] = field(default_factory=lambda: deque(maxlen=200))
def log(self, event_type: str, message: str, **extra: Any) -> None:
now = datetime.utcnow().isoformat()
event = {"timestamp": now, "type": event_type, "message": message, **extra}
self.last_event_at = now
self.events.appendleft(event)
flow_queue = None
ml_worker = None
ns3_reader = None
ns3_state = NS3State()