Use intra doc in network-gossip (#10501)

* Use intra doc in network-gossip

So that we could jump to the definition easily.

* cargo +nightly fmt --all
This commit is contained in:
Liu-Cheng Xu
2021-12-17 07:19:30 +08:00
committed by GitHub
parent 9b73a8a6fc
commit 472e29f843
2 changed files with 15 additions and 15 deletions
@@ -39,7 +39,7 @@ use std::{
task::{Context, Poll}, task::{Context, Poll},
}; };
/// Wraps around an implementation of the `Network` crate and provides gossiping capabilities on /// Wraps around an implementation of the [`Network`] trait and provides gossiping capabilities on
/// top of it. /// top of it.
pub struct GossipEngine<B: BlockT> { pub struct GossipEngine<B: BlockT> {
state_machine: ConsensusGossip<B>, state_machine: ConsensusGossip<B>,
@@ -56,7 +56,7 @@ pub struct GossipEngine<B: BlockT> {
} }
/// A gossip engine receives messages from the network via the `network_event_stream` and forwards /// A gossip engine receives messages from the network via the `network_event_stream` and forwards
/// them to upper layers via the `message sinks`. In the scenario where messages have been received /// them to upper layers via the `message_sinks`. In the scenario where messages have been received
/// from the network but a subscribed message sink is not yet ready to receive the messages, the /// from the network but a subscribed message sink is not yet ready to receive the messages, the
/// messages are buffered. To model this process a gossip engine can be in two states. /// messages are buffered. To model this process a gossip engine can be in two states.
enum ForwardingState<B: BlockT> { enum ForwardingState<B: BlockT> {
+13 -13
View File
@@ -26,32 +26,32 @@
//! message, assuming it is valid. //! message, assuming it is valid.
//! //!
//! Topics are a single 32-byte tag associated with a message, used to group those messages //! Topics are a single 32-byte tag associated with a message, used to group those messages
//! in an opaque way. Consensus code can invoke `broadcast_topic` to attempt to send all messages //! in an opaque way. Consensus code can invoke [`ValidatorContext::broadcast_topic`] to
//! under a single topic to all peers who don't have them yet, and `send_topic` to //! attempt to send all messages under a single topic to all peers who don't have them yet, and
//! send all messages under a single topic to a specific peer. //! [`ValidatorContext::send_topic`] to send all messages under a single topic to a specific peer.
//! //!
//! # Usage //! # Usage
//! //!
//! - Implement the `Network` trait, representing the low-level networking primitives. It is already //! - Implement the [`Network`] trait, representing the low-level networking primitives. It is
//! implemented on `sc_network::NetworkService`. //! already implemented on `sc_network::NetworkService`.
//! - Implement the `Validator` trait. See the section below. //! - Implement the [`Validator`] trait. See the section below.
//! - Decide on a protocol name. Each gossiping protocol should have a different one. //! - Decide on a protocol name. Each gossiping protocol should have a different one.
//! - Build a `GossipEngine` using these three elements. //! - Build a [`GossipEngine`] using these three elements.
//! - Use the methods of the `GossipEngine` in order to send out messages and receive incoming //! - Use the methods of the [`GossipEngine`] in order to send out messages and receive incoming
//! messages. //! messages.
//! //!
//! The `GossipEngine` will automatically use `Network::add_set_reserved` and //! The [`GossipEngine`] will automatically use [`Network::add_set_reserved`] and
//! `Network::remove_set_reserved` to maintain a set of peers equal to the set of peers the //! [`Network::remove_set_reserved`] to maintain a set of peers equal to the set of peers the
//! node is syncing from. See the documentation of `sc-network` for more explanations about the //! node is syncing from. See the documentation of `sc-network` for more explanations about the
//! concepts of peer sets. //! concepts of peer sets.
//! //!
//! # What is a validator? //! # What is a validator?
//! //!
//! The primary role of a `Validator` is to process incoming messages from peers, and decide //! The primary role of a [`Validator`] is to process incoming messages from peers, and decide
//! whether to discard them or process them. It also decides whether to re-broadcast the message. //! whether to discard them or process them. It also decides whether to re-broadcast the message.
//! //!
//! The secondary role of the `Validator` is to check if a message is allowed to be sent to a given //! The secondary role of the [`Validator`] is to check if a message is allowed to be sent to a
//! peer. All messages, before being sent, will be checked against this filter. //! given peer. All messages, before being sent, will be checked against this filter.
//! This enables the validator to use information it's aware of about connected peers to decide //! This enables the validator to use information it's aware of about connected peers to decide
//! whether to send messages to them at any given moment in time - In particular, to wait until //! whether to send messages to them at any given moment in time - In particular, to wait until
//! peers can accept and process the message before sending it. //! peers can accept and process the message before sending it.