refactor+feat: allow subsystems to send only declared messages, generate graphviz (#5314)

Closes #3774
Closes #3826
This commit is contained in:
Bernhard Schuster
2022-05-12 17:39:05 +02:00
committed by GitHub
parent 26340b9054
commit 511891dcce
102 changed files with 3853 additions and 2514 deletions
+1 -35
View File
@@ -24,9 +24,7 @@
pub use jaeger::*;
pub use polkadot_node_jaeger as jaeger;
pub use polkadot_overseer::{
self as overseer, ActiveLeavesUpdate, OverseerConnector, OverseerSignal,
};
pub use polkadot_overseer::{self as overseer, *};
pub use polkadot_node_subsystem_types::{
errors::{self, *},
@@ -54,37 +52,5 @@ pub type FromOverseer<M> = polkadot_overseer::gen::FromOverseer<M, OverseerSigna
pub type SubsystemInstance<Message> =
polkadot_overseer::gen::SubsystemInstance<Message, OverseerSignal>;
/// Sender trait for the `AllMessages` wrapper.
pub trait SubsystemSender: polkadot_overseer::gen::SubsystemSender<messages::AllMessages> {}
impl<T> SubsystemSender for T where T: polkadot_overseer::gen::SubsystemSender<messages::AllMessages>
{}
/// Spawned subsystem.
pub type SpawnedSubsystem = polkadot_overseer::gen::SpawnedSubsystem<SubsystemError>;
/// Convenience trait specialization.
pub trait SubsystemContext:
polkadot_overseer::gen::SubsystemContext<
Signal = OverseerSignal,
AllMessages = messages::AllMessages,
Error = SubsystemError,
>
{
/// The message type the subsystem consumes.
type Message: std::fmt::Debug + Send + 'static;
/// Sender type to communicate with other subsystems.
type Sender: SubsystemSender + Send + Clone + 'static;
}
impl<T> SubsystemContext for T
where
T: polkadot_overseer::gen::SubsystemContext<
Signal = OverseerSignal,
AllMessages = messages::AllMessages,
Error = SubsystemError,
>,
{
type Message = <Self as polkadot_overseer::gen::SubsystemContext>::Message;
type Sender = <Self as polkadot_overseer::gen::SubsystemContext>::Sender;
}