yew_agent

Module reactor

Source
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§

ReactorBridge
A connection manager for components interaction with oneshot workers.
ReactorProvider
The Reactor Agent Provider.
ReactorRegistrar
A registrar for reactor workers.
ReactorScope
A handle to communicate with bridges.
ReactorSpawner
A spawner to create oneshot workers.
UseReactorBridgeHandle
Hook handle for the use_reactor_bridge hook.
UseReactorSubscriptionHandle
Hook handle for the use_reactor_subscription hook.

Enums§

ReactorEvent
A type that represents events from a reactor.

Traits§

Reactor
A reactor worker.
ReactorScoped
A helper trait to extract the input and output type from a [ReactorStream].

Functions§

use_reactor_bridge
A hook to bridge to a Reactor.
use_reactor_subscription
A hook to subscribe to the outputs of a Reactor agent.

Attribute Macros§

reactor
A procedural macro to create reactor agents.