dheraingoud's picture
feat: synchronize proxy with upstream commits up to 5305bd7 and integrate NIM key rotator
0a54372
Raw
History Blame Contribute Delete
1.33 kB
"""FIFO queue state for one messaging conversation tree."""
from collections import deque
class MessageNodeQueue:
"""Queue with snapshot/remove helpers, backed by a deque and a set index."""
def __init__(self, items: list[str] | None = None) -> None:
self._deque: deque[str] = deque()
self._set: set[str] = set()
for item in items or []:
self.put(item)
def put(self, item: str) -> bool:
"""Append a unique item and report whether the queue changed."""
if item in self._set:
return False
self._deque.append(item)
self._set.add(item)
return True
def pop(self) -> str | None:
if not self._deque:
return None
item = self._deque.popleft()
self._set.discard(item)
return item
def qsize(self) -> int:
return len(self._deque)
def items(self) -> tuple[str, ...]:
return tuple(self._deque)
def remove(self, item: str) -> bool:
if item not in self._set:
return False
self._set.discard(item)
self._deque = deque(x for x in self._deque if x != item)
return True
def drain(self) -> tuple[str, ...]:
items = tuple(self._deque)
self._deque.clear()
self._set.clear()
return items