pyinfra/pyinfra/server/stream/queued_stream_function.py
Matthias Bisping 36d8d3bc85 renaming
2022-07-04 11:46:53 +02:00

22 lines
544 B
Python

from funcy import first
from pyinfra.server.buffering.queue import stream_queue, Queue
class QueuedStreamFunction:
def __init__(self, stream_function):
"""Combines a stream function with a queue.
Args:
stream_function: Needs to operate on iterables.
"""
self.queue = Queue()
self.stream_function = stream_function
def push(self, item):
self.queue.append(item)
def pop(self):
items = stream_queue(self.queue)
return first(self.stream_function(items))