Files
langgraph/permchain/connection_queue.py
T
2023-08-09 19:50:50 +01:00

25 lines
743 B
Python

from collections import defaultdict
import threading
from typing import Any
from permchain.connection import PubSubConnection, PubSubListener
class InMemoryPubSubConnection(PubSubConnection):
def __init__(self) -> None:
self.topics = defaultdict(list)
self.lock = threading.Lock()
def listen(self, topic_name: str, listener: PubSubListener) -> None:
with self.lock:
self.topics[topic_name].append(listener)
def send(self, topic_name: str, message: Any) -> None:
with self.lock:
for listener in self.topics[topic_name]:
listener(message)
def disconnect(self, topic_name: str) -> None:
with self.lock:
self.topics[topic_name] = []