Class InMemorySignalBus
java.lang.Object
at.aimon.session.web.spi.inmemory.InMemorySignalBus
- All Implemented Interfaces:
ConversationSignalBus
Single-process
ConversationSignalBus backed by per-conversation subscriber lists.
Each subscribe appends to a CopyOnWriteArrayList so publish(at.aimon.session.web.spi.ConversationSignal) can iterate without locking.
Handlers run synchronously on the publisher thread — callers must keep them non-blocking. Suitable for
SINGLE_NODE deployments and unit tests.
-
Nested Class Summary
Nested classes/interfaces inherited from interface at.aimon.session.web.spi.ConversationSignalBus
ConversationSignalBus.Subscription -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidpublish(ConversationSignal signal) Publish a signal.subscribe(at.aimon.core.agent.conversation.ConversationId id, Consumer<ConversationSignal> handler) Subscribe to signals targetingid.
-
Constructor Details
-
InMemorySignalBus
public InMemorySignalBus()
-
-
Method Details
-
subscribe
public ConversationSignalBus.Subscription subscribe(at.aimon.core.agent.conversation.ConversationId id, Consumer<ConversationSignal> handler) Description copied from interface:ConversationSignalBusSubscribe to signals targetingid.- Specified by:
subscribein interfaceConversationSignalBus- Parameters:
id- the conversation to subscribe to (must not be null)handler- invoked for every signal received (must not be null)- Returns:
- a
ConversationSignalBus.Subscriptionthe caller closes to unsubscribe
-
publish
Description copied from interface:ConversationSignalBusPublish a signal. Idempotent w.r.t. duplicate delivery — receivers must be able to handle the same signal repeatedly.- Specified by:
publishin interfaceConversationSignalBus- Parameters:
signal- the signal to publish (must not be null)
-