diff options
Diffstat (limited to 'server/continuedev/libs/util/queue.py')
-rw-r--r-- | server/continuedev/libs/util/queue.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/server/continuedev/libs/util/queue.py b/server/continuedev/libs/util/queue.py new file mode 100644 index 00000000..e1f98cc6 --- /dev/null +++ b/server/continuedev/libs/util/queue.py @@ -0,0 +1,17 @@ +import asyncio +from typing import Dict + + +class AsyncSubscriptionQueue: + # The correct way to do this is probably to keep request IDs + queues: Dict[str, asyncio.Queue] = {} + + def post(self, messageType: str, data: any): + if messageType not in self.queues: + self.queues.update({messageType: asyncio.Queue()}) + self.queues[messageType].put_nowait(data) + + async def get(self, message_type: str) -> any: + if message_type not in self.queues: + self.queues.update({message_type: asyncio.Queue()}) + return await self.queues[message_type].get() |