Core Async Helpers
This crate contains helpers related to common asynchronous programming patterns used in nearcore:
- messaging: common interfaces for sending messages between components.
- test_loop: a event-loop-based test framework that can test multiple components together in a synchronous way.
Messaging
Sender<T>
and AsyncSender<T>
are abstractions of our Actix interfaces. When
a component needs to send a message to another component, the component should
keep a Sender<T>
as a field and require it during construction, like:
The sender can then be used to send messages:
To create a Sender<T>
, we need any implementation of CanSend<T>
. One way is
to use an Actix address:
In tests, the TestLoopBuilder
provides the sender()
function which also
implements CanSend
, see the examples directory under this crate.
AsyncSender<T>
is similar, except that calling send_async
returns a future
that carries the response to the message.