referrerpolicy=no-referrer-when-downgrade

Crate polkadot_node_subsystem::gen

Expand description

§Orchestra

orchestra provides a global information flow system in reference to system specifc process tokens. The token is arbitrary, but is used to notify all Subsystems of what is relevant and what is not, leading to a so called view of active tokens.

An orchestra is something that allows spawning/stopping and orchestrating asynchronous tasks as well as establishing a well-defined and easy to use protocol that the tasks can use to communicate with each other. It is desired that this protocol is the only way tasks - called Subsystems in the orchestra scope - communicate with each other, but that is not enforced and is the responsibility of the developer.

The Orchestra is instantiated with a pre-defined set of Subsystems that share the same behavior from Orchestra’s point of view.

                             +-----------------------------+
                             |         Orchesta            |
                             +-----------------------------+

            ................|  Orchestra "holds" these and uses |.............
            .                  them to (re)start things                      .
            .                                                                .
            .  +-------------------+                +---------------------+  .
            .  |   Subsystem1      |                |   Subsystem2        |  .
            .  +-------------------+                +---------------------+  .
            .           |                                       |            .
            ..................................................................
                        |                                       |
                      start()                                 start()
                        |                                       |
                        V                                       V
            ..................| Orchestra "runs" these |......................
            .                                                                .
            .  +--------------------+               +---------------------+  .
            .  | SubsystemInstance1 | <-- bidir --> | SubsystemInstance2  |  .
            .  +--------------------+               +---------------------+  .
            .                                                                .
            ..................................................................

Modules§

  • Abstractions for asynchronous programming.
  • Metered variant of mpsc channels to be able to extract metrics.
  • A scoped, structured logging and diagnostics system.

Macros§

  • A macro which returns the result of polling a future once within the current async context.
  • Polls multiple futures and streams simultaneously, executing the branch for the future that finishes first. If multiple futures are ready, one will be pseudo-randomly selected at runtime. Futures directly passed to select! must be Unpin and implement FusedFuture.

Structs§

Enums§

  • A message type that a subsystem receives from an orchestra. It wraps signals from an orchestra and messages that are circulating between subsystems.
  • An error type that describes faults that may happen
  • Indicates whether a value is available or if the current task has been scheduled to receive a wakeup instead.
  • Type to tell SelectWithStrategy which stream to poll next.
  • Priority of messages sending to the individual subsystems. Only for the bounded channel sender.
  • A type of messages that are sent from a Subsystem to the declared orchestra.
  • A bounded channel error when trying to send a message (transparently wraps the inner error type)

Traits§

  • A trait to support the origin annotation such that errors across subsystems can be easier tracked.
  • A future represents an asynchronous computation obtained by use of async.
  • An extension trait for Futures that provides a variety of convenient adapters.
  • A helper trait to map a subsystem to smth. else.
  • Describes the priority of the message.
  • A spawner
  • An extension trait for Streams that provides a variety of convenient combinator functions.
  • A trait that describes the Subsystems that can run on the Orchestra.
  • A context type that is given to the Subsystem upon spawning. It can be used by Subsystem to communicate with other Subsystems or spawn jobs.
  • Sender end of a channel to interface with a subsystem.
  • Extends Future to allow time-limited futures.

Functions§

  • Create a packet from its parts.
  • This function will attempt to pull items from both streams. Each stream will be polled in a round-robin fashion, and whenever a stream is ready to yield an item that item is yielded.
  • A functor to specify strategy of the channels selection in the SubsystemIncomingMessages
  • This function will attempt to pull items from both streams. You provide a closure to tell SelectWithStrategy which stream to poll. The closure can store state on SelectWithStrategy to which it will receive a &mut on every invocation. This allows basing the strategy on prior choices.

Type Aliases§

  • An owned dynamically typed Future for use in cases where you can’t statically type your result or need to add some indirection.
  • Alias for a result with error type OrchestraError.
  • Incoming messages from both the bounded and unbounded channel.

Attribute Macros§