puyang2025's picture
update
f8d6dca
"""Submission and event queues for the engine protocol."""
from __future__ import annotations
from collections import deque
from dataclasses import dataclass, field
from typing import Deque, Iterable
from protocol.events import EventMsg
from protocol.op import Op
@dataclass
class QueuePair:
submissions: Deque[Op] = field(default_factory=deque)
events: Deque[EventMsg] = field(default_factory=deque)
def submit(self, op: Op) -> None:
self.submissions.append(op)
def has_submissions(self) -> bool:
return bool(self.submissions)
def pop_submission(self) -> Op:
return self.submissions.popleft()
def emit(self, event: EventMsg) -> None:
self.events.append(event)
def drain_events(self) -> Iterable[EventMsg]:
while self.events:
yield self.events.popleft()