orchestra 0.0.5

Generate an orchestra of subsystems from a single struct.
Documentation

Orchestra

orchestra provides a global information flow of what a token of information. The token is arbitrary, but is used to notify all Subsystems of what is relevant and what is not.

For the motivations behind implementing the orchestra itself you should check out that guide, documentation in this crate will focus and be of technical nature.

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 communicate with each other, however at this moment there are no foolproof guards against other ways of communication.

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  |  .
.  +--------------------+               +---------------------+  .
..................................................................