INNER CODE UNIT · Python
take
ImFeH2/huddol · core/src/fora/adapters/websocket/server.py:195
async def take(self) -> OutgoingFrame | None:
while True:
with self.lock:
if self.closed:
return None
if self.items:
return self.items.popleft()
self.available.clear()
await self.available.wait()
def release(self, frame: OutgoingFrame) -> None:
if frame.completion is None:
with self.lock:
self.frames -= 1
self.used -= frame.cost
async def send(self, connection: web.WebSocketResponse) -> None:
while (frame := await self.take()) is not None: