22 lines
544 B
Python
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))
|