Expand description
This module contains the reactor agent implementation.
Reactor agents are agents that receive multiple inputs and send multiple outputs over a single bridge. A reactor is defined as an async function that takes a ReactorScope as the argument.
The reactor scope is a stream that produces inputs from the bridge and a sink that implements an additional send method to send outputs to the connected bridge. When the bridge disconnects, the output stream and input sink will be closed.
§Example
use futures::sink::SinkExt;
use futures::stream::StreamExt;
use yew_agent::reactor::{reactor, ReactorScope};
#[reactor(MyReactor)]
pub async fn my_reactor(mut scope: ReactorScope<ReactorInput, ReactorOutput>) {
while let Some(input) = scope.next().await {
// handles each input.
// ...
// sends output
if scope.send(output).await.is_err() {
// sender closed, the bridge is disconnected
break;
}
}
}
Structs§
- A connection manager for components interaction with oneshot workers.
- The Reactor Agent Provider.
- A registrar for reactor workers.
- A handle to communicate with bridges.
- A spawner to create oneshot workers.
- Hook handle for the
use_reactor_bridge
hook. - Hook handle for the
use_reactor_subscription
hook.
Enums§
- A type that represents events from a reactor.
Traits§
- A reactor worker.
- A helper trait to extract the input and output type from a [ReactorStream].
Functions§
Attribute Macros§
- A procedural macro to create reactor agents.