From 19286563612d25af55069964b8c43ec0b41229cb Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 28 Oct 2020 18:53:09 +0300 Subject: [PATCH] Collator protocol should choose side (#1872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Collator protocol should choose side * Update node/service/src/lib.rs Co-authored-by: Bastian Köcher --- polkadot/node/service/src/lib.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/polkadot/node/service/src/lib.rs b/polkadot/node/service/src/lib.rs index 16680622cd..420f8a6a77 100644 --- a/polkadot/node/service/src/lib.rs +++ b/polkadot/node/service/src/lib.rs @@ -295,6 +295,7 @@ fn real_overseer( authority_discovery: AuthorityDiscoveryService, registry: Option<&Registry>, spawner: Spawner, + is_collator: IsCollator, ) -> Result<(Overseer, OverseerHandler), Error> where RuntimeClient: 'static + ProvideRuntimeApi + HeaderBackend, @@ -357,9 +358,15 @@ where collation_generation: CollationGenerationSubsystem::new( Metrics::register(registry)?, ), - collator_protocol: CollatorProtocolSubsystem::new( - ProtocolSide::Validator(Metrics::register(registry)?), - ), + collator_protocol: { + let side = match is_collator { + IsCollator::Yes(id) => ProtocolSide::Collator(id, Metrics::register(registry)?), + IsCollator::No => ProtocolSide::Validator(Metrics::register(registry)?), + }; + CollatorProtocolSubsystem::new( + side, + ) + }, network_bridge: NetworkBridgeSubsystem::new( network_service, authority_discovery, @@ -418,10 +425,10 @@ impl NewFull { /// Is this node a collator? #[cfg(feature = "full-node")] -#[derive(Debug, PartialEq, Eq, Clone, Copy)] +#[derive(Debug, PartialEq, Eq, Clone)] pub enum IsCollator { /// This node is a collator. - Yes, + Yes(CollatorId), /// This node is not a collator. No, } @@ -430,7 +437,7 @@ pub enum IsCollator { impl IsCollator { /// Is this a collator? fn is_collator(&self) -> bool { - *self == Self::Yes + matches!(self, Self::Yes(_)) } } @@ -573,6 +580,7 @@ pub fn new_full( authority_discovery_service, prometheus_registry.as_ref(), spawner, + is_collator, )?; let overseer_handler_clone = overseer_handler.clone();