merge aggregator & test

This commit is contained in:
Moishe Lettvin
2024-02-28 11:05:49 -05:00
parent 38cb8ca6a3
commit d26d23fed7
4 changed files with 188 additions and 37 deletions

View File

@@ -33,26 +33,28 @@ class PipeService(AbstractPipeService):
def __init__(
self,
source: AbstractPipeService | None = None,
source_queue: asyncio.Queue[QueueFrame] | None = None,
):
super().__init__()
self.logger: logging.Logger = logging.getLogger("dailyai")
self.source = source
self.source_queue = source_queue
async def process_queue(self):
if not self.source:
if not self.source_queue:
return
while True:
frame: QueueFrame = await self.source.sink_queue.get()
frame: QueueFrame = await self.source_queue.get()
async for output_frame in self.process_frame(frame):
await self.sink_queue.put(output_frame)
if isinstance(frame, EndStreamQueueFrame):
print("end of stream", type(self))
async for output_frame in self.finalize():
await self.sink_queue.put(output_frame)
async for final_frame in self.finalize():
await self.sink_queue.put(final_frame)
await self.sink_queue.put(output_frame)
return
await self.sink_queue.put(output_frame)
@abstractmethod
async def process_frame(self, frame: QueueFrame) -> AsyncGenerator[QueueFrame, None]:
yield frame