mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 15:51:12 +00:00
refactor overseer into proc-macro based pattern (#2962)
This commit is contained in:
committed by
GitHub
parent
2510bfc5d7
commit
3c9104daff
@@ -26,7 +26,8 @@ use error::{FatalResult, NonFatalResult, log_error};
|
||||
use parity_scale_codec::Encode;
|
||||
|
||||
use polkadot_subsystem::{
|
||||
ActiveLeavesUpdate, FromOverseer, OverseerSignal, PerLeafSpan, SpawnedSubsystem, Subsystem,
|
||||
overseer,
|
||||
ActiveLeavesUpdate, FromOverseer, OverseerSignal, PerLeafSpan, SpawnedSubsystem,
|
||||
SubsystemContext, SubsystemError, jaeger,
|
||||
messages::{
|
||||
AllMessages, NetworkBridgeMessage, StatementDistributionMessage,
|
||||
@@ -107,10 +108,12 @@ pub struct StatementDistribution {
|
||||
metrics: Metrics,
|
||||
}
|
||||
|
||||
impl<C> Subsystem<C> for StatementDistribution
|
||||
where C: SubsystemContext<Message=StatementDistributionMessage>
|
||||
impl<Context> overseer::Subsystem<Context, SubsystemError> for StatementDistribution
|
||||
where
|
||||
Context: SubsystemContext<Message=StatementDistributionMessage>,
|
||||
Context: overseer::SubsystemContext<Message=StatementDistributionMessage>,
|
||||
{
|
||||
fn start(self, ctx: C) -> SpawnedSubsystem {
|
||||
fn start(self, ctx: Context) -> SpawnedSubsystem {
|
||||
// Swallow error because failure is fatal to the node and we log with more precision
|
||||
// within `run`.
|
||||
SpawnedSubsystem {
|
||||
@@ -588,7 +591,7 @@ enum Message {
|
||||
|
||||
impl Message {
|
||||
async fn receive(
|
||||
ctx: &mut impl SubsystemContext<Message = StatementDistributionMessage>,
|
||||
ctx: &mut (impl SubsystemContext<Message = StatementDistributionMessage> + overseer::SubsystemContext<Message = StatementDistributionMessage>),
|
||||
from_requester: &mut mpsc::Receiver<RequesterMessage>,
|
||||
from_responder: &mut mpsc::Receiver<ResponderMessage>,
|
||||
) -> Message {
|
||||
@@ -846,7 +849,7 @@ async fn circulate_statement_and_dependents(
|
||||
gossip_peers: &HashSet<PeerId>,
|
||||
peers: &mut HashMap<PeerId, PeerData>,
|
||||
active_heads: &mut HashMap<Hash, ActiveHeadData>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
relay_parent: Hash,
|
||||
statement: SignedFullStatement,
|
||||
priority_peers: Vec<PeerId>,
|
||||
@@ -953,7 +956,7 @@ fn is_statement_large(statement: &SignedFullStatement) -> bool {
|
||||
async fn circulate_statement<'a>(
|
||||
gossip_peers: &HashSet<PeerId>,
|
||||
peers: &mut HashMap<PeerId, PeerData>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
relay_parent: Hash,
|
||||
stored: StoredStatement<'a>,
|
||||
mut priority_peers: Vec<PeerId>,
|
||||
@@ -1034,7 +1037,7 @@ async fn circulate_statement<'a>(
|
||||
async fn send_statements_about(
|
||||
peer: PeerId,
|
||||
peer_data: &mut PeerData,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
relay_parent: Hash,
|
||||
candidate_hash: CandidateHash,
|
||||
active_head: &ActiveHeadData,
|
||||
@@ -1071,7 +1074,7 @@ async fn send_statements_about(
|
||||
async fn send_statements(
|
||||
peer: PeerId,
|
||||
peer_data: &mut PeerData,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
relay_parent: Hash,
|
||||
active_head: &ActiveHeadData,
|
||||
metrics: &Metrics,
|
||||
@@ -1103,7 +1106,7 @@ async fn send_statements(
|
||||
}
|
||||
|
||||
async fn report_peer(
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
peer: PeerId,
|
||||
rep: Rep,
|
||||
) {
|
||||
@@ -1123,7 +1126,7 @@ async fn retrieve_statement_from_message<'a>(
|
||||
peer: PeerId,
|
||||
message: protocol_v1::StatementDistributionMessage,
|
||||
active_head: &'a mut ActiveHeadData,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
req_sender: &mpsc::Sender<RequesterMessage>,
|
||||
metrics: &Metrics,
|
||||
) -> Option<UncheckedSignedFullStatement> {
|
||||
@@ -1225,7 +1228,7 @@ async fn launch_request(
|
||||
meta: StatementMetadata,
|
||||
peer: PeerId,
|
||||
req_sender: mpsc::Sender<RequesterMessage>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
metrics: &Metrics,
|
||||
) -> Option<LargeStatementStatus> {
|
||||
|
||||
@@ -1263,7 +1266,7 @@ async fn handle_incoming_message_and_circulate<'a>(
|
||||
gossip_peers: &HashSet<PeerId>,
|
||||
peers: &mut HashMap<PeerId, PeerData>,
|
||||
active_heads: &'a mut HashMap<Hash, ActiveHeadData>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
message: protocol_v1::StatementDistributionMessage,
|
||||
req_sender: &mpsc::Sender<RequesterMessage>,
|
||||
metrics: &Metrics,
|
||||
@@ -1312,7 +1315,7 @@ async fn handle_incoming_message<'a>(
|
||||
peer: PeerId,
|
||||
peer_data: &mut PeerData,
|
||||
active_heads: &'a mut HashMap<Hash, ActiveHeadData>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
message: protocol_v1::StatementDistributionMessage,
|
||||
req_sender: &mpsc::Sender<RequesterMessage>,
|
||||
metrics: &Metrics,
|
||||
@@ -1447,10 +1450,7 @@ async fn handle_incoming_message<'a>(
|
||||
|
||||
// When we receive a new message from a peer, we forward it to the
|
||||
// candidate backing subsystem.
|
||||
let message = AllMessages::CandidateBacking(
|
||||
CandidateBackingMessage::Statement(relay_parent, statement.statement.clone())
|
||||
);
|
||||
ctx.send_message(message).await;
|
||||
ctx.send_message(CandidateBackingMessage::Statement(relay_parent, statement.statement.clone())).await;
|
||||
|
||||
Some((relay_parent, statement))
|
||||
}
|
||||
@@ -1462,7 +1462,7 @@ async fn update_peer_view_and_maybe_send_unlocked(
|
||||
peer: PeerId,
|
||||
gossip_peers: &HashSet<PeerId>,
|
||||
peer_data: &mut PeerData,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
active_heads: &HashMap<Hash, ActiveHeadData>,
|
||||
new_view: View,
|
||||
metrics: &Metrics,
|
||||
@@ -1506,7 +1506,7 @@ async fn handle_network_update(
|
||||
gossip_peers: &mut HashSet<PeerId>,
|
||||
authorities: &mut HashMap<AuthorityDiscoveryId, PeerId>,
|
||||
active_heads: &mut HashMap<Hash, ActiveHeadData>,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
req_sender: &mpsc::Sender<RequesterMessage>,
|
||||
update: NetworkBridgeEvent<protocol_v1::StatementDistributionMessage>,
|
||||
metrics: &Metrics,
|
||||
@@ -1599,7 +1599,7 @@ async fn handle_network_update(
|
||||
impl StatementDistribution {
|
||||
async fn run(
|
||||
self,
|
||||
mut ctx: impl SubsystemContext<Message = StatementDistributionMessage>,
|
||||
mut ctx: (impl SubsystemContext<Message = StatementDistributionMessage> + overseer::SubsystemContext<Message = StatementDistributionMessage>),
|
||||
) -> std::result::Result<(), Fatal> {
|
||||
let mut peers: HashMap<PeerId, PeerData> = HashMap::new();
|
||||
let mut gossip_peers: HashSet<PeerId> = HashSet::new();
|
||||
@@ -1831,7 +1831,7 @@ impl StatementDistribution {
|
||||
|
||||
async fn handle_subsystem_message(
|
||||
&self,
|
||||
ctx: &mut impl SubsystemContext,
|
||||
ctx: &mut (impl SubsystemContext + overseer::SubsystemContext),
|
||||
runtime: &mut RuntimeInfo,
|
||||
peers: &mut HashMap<PeerId, PeerData>,
|
||||
gossip_peers: &mut HashSet<PeerId>,
|
||||
|
||||
Reference in New Issue
Block a user