summaryrefslogtreecommitdiff
path: root/server/continuedev/libs/util/queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/continuedev/libs/util/queue.py')
-rw-r--r--server/continuedev/libs/util/queue.py17
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()