core.stream¶
- class immp.core.stream.PlugStream¶
Bases:
object
Message multiplexer, to read messages from multiple asynchronous generators in parallel.
Instances of this class are async-iterable – for each incoming message, a tuple is produced: the physical message received by the plug, a source message if originating from within the system, and a primary flag to indicate supplementary messages created when a system-sourced message can’t be represented in a single plug message.
Warning
As per
Plug.stream()
, only one iterator of this class should be used at once.- Yields:
(.SentMessage, .Message, bool) tuple – Messages received and processed by any connected plug.
- add(*plugs)¶
Connect plugs to the stream. When the stream is active, their
Plug.stream()
methods will be called to start collecting queued messages.- Parameters:
plugs (.Plug list) – New plugs to merge in.
- remove(*plugs)¶
Disconnect plugs from the stream. Their
Plug.stream()
tasks will be cancelled, and any last messages will be collected before removing.- Parameters:
plugs (.Plug list) – Active plugs to remove.