[−][src]Struct sc_network::NetworkService
Substrate network service. Handles network IO and manages connectivity.
Implementations
impl<B: BlockT + 'static, H: ExHashT> NetworkService<B, H>
[src]
pub fn local_peer_id(&self) -> &PeerId
[src]
Returns the local PeerId
.
pub fn write_notification(
&self,
target: PeerId,
engine_id: ConsensusEngineId,
message: Vec<u8>
)
[src]
&self,
target: PeerId,
engine_id: ConsensusEngineId,
message: Vec<u8>
)
Writes a message on an open notifications channel. Has no effect if the notifications channel with this protocol name is closed.
Note: The reason why this is a no-op in the situation where we have no channel is that we don't guarantee message delivery anyway. Networking issues can cause connections to drop at any time, and higher-level logic shouldn't differentiate between the remote voluntarily closing a substream or a network error preventing the message from being delivered.
The protocol must have been registered with register_notifications_protocol
.
pub fn event_stream(&self, name: &'static str) -> impl Stream<Item = Event>
[src]
Returns a stream containing the events that happen on the network.
If this method is called multiple times, the events are duplicated.
The stream never ends (unless the NetworkWorker
gets shut down).
The name passed is used to identify the channel in the Prometheus metrics. Note that the
parameter is a &'static str
, and not a String
, in order to avoid accidentally having
an unbounded set of Prometheus metrics, which would be quite bad in terms of memory
pub fn register_notifications_protocol(
&self,
engine_id: ConsensusEngineId,
protocol_name: impl Into<Cow<'static, [u8]>>
)
[src]
&self,
engine_id: ConsensusEngineId,
protocol_name: impl Into<Cow<'static, [u8]>>
)
Registers a new notifications protocol.
After a protocol has been registered, you can call write_notifications
.
Important: This method is a work-around, and you are instead strongly encouraged to
pass the protocol in the NetworkConfiguration::notifications_protocols
list instead.
If you have no other choice but to use this method, you are very strongly encouraged to
call it very early on. Any connection open will retain the protocols that were registered
then, and not any new one.
Please call event_stream
before registering a protocol, otherwise you may miss events
about the protocol that you have registered.
pub fn trigger_repropagate(&self)
[src]
You may call this when new transactons are imported by the transaction pool.
All transactions will be fetched from the TransactionPool
that was passed at
initialization as part of the configuration and propagated to peers.
pub fn propagate_transaction(&self, hash: H)
[src]
You must call when new transaction is imported by the transaction pool.
This transaction will be fetched from the TransactionPool
that was passed at
initialization as part of the configuration and propagated to peers.
pub fn announce_block(&self, hash: B::Hash, data: Vec<u8>)
[src]
Make sure an important block is propagated to peers.
In chain-based consensus, we often need to make sure non-best forks are at least temporarily synced. This function forces such an announcement.
pub fn report_peer(&self, who: PeerId, cost_benefit: ReputationChange)
[src]
Report a given peer as either beneficial (+) or costly (-) according to the given scalar.
pub fn disconnect_peer(&self, who: PeerId)
[src]
Disconnect from a node as soon as possible.
This triggers the same effects as if the connection had closed itself spontaneously.
pub fn request_justification(&self, hash: &B::Hash, number: NumberFor<B>)
[src]
Request a justification for the given block from the network.
On success, the justification will be passed to the import queue that was part at initialization as part of the configuration.
pub fn is_major_syncing(&self) -> bool
[src]
Are we in the process of downloading the chain?
pub fn get_value(&self, key: &Key)
[src]
Start getting a value from the DHT.
This will generate either a ValueFound
or a ValueNotFound
event and pass it as an
item on the NetworkWorker
stream.
pub fn put_value(&self, key: Key, value: Vec<u8>)
[src]
Start putting a value in the DHT.
This will generate either a ValuePut
or a ValuePutFailed
event and pass it as an
item on the NetworkWorker
stream.
pub fn accept_unreserved_peers(&self)
[src]
Connect to unreserved peers and allow unreserved peers to connect.
pub fn deny_unreserved_peers(&self)
[src]
Disconnect from unreserved peers and deny new unreserved peers to connect.
pub fn remove_reserved_peer(&self, peer: PeerId)
[src]
Removes a PeerId
from the list of reserved peers.
pub fn add_reserved_peer(&self, peer: String) -> Result<(), String>
[src]
Adds a PeerId
and its address as reserved. The string should encode the address
and peer ID of the remote node.
Returns an Err
if the given string is not a valid multiaddress
or contains an invalid peer ID (which includes the local peer ID).
pub fn set_sync_fork_request(
&self,
peers: Vec<PeerId>,
hash: B::Hash,
number: NumberFor<B>
)
[src]
&self,
peers: Vec<PeerId>,
hash: B::Hash,
number: NumberFor<B>
)
Configure an explicit fork sync request.
Note that this function should not be used for recent blocks.
Sync should be able to download all the recent forks normally.
set_sync_fork_request
should only be used if external code detects that there's
a stale fork missing.
Passing empty peers
set effectively removes the sync request.
pub fn set_priority_group(
&self,
group_id: String,
peers: HashSet<Multiaddr>
) -> Result<(), String>
[src]
&self,
group_id: String,
peers: HashSet<Multiaddr>
) -> Result<(), String>
Modify a peerset priority group.
Returns an Err
if one of the given addresses contains an invalid
peer ID (which includes the local peer ID).
pub fn num_connected(&self) -> usize
[src]
Returns the number of peers we're connected to.
pub fn update_chain(&self)
[src]
This function should be called when blocks are added to the chain by something other than the import queue.
Important: This function is a hack and can be removed at any time. Do not use it.
pub fn own_block_imported(&self, hash: B::Hash, number: NumberFor<B>)
[src]
Inform the network service about an own imported block.
Trait Implementations
impl<B, H> NetworkStateInfo for NetworkService<B, H> where
B: Block,
H: ExHashT,
[src]
B: Block,
H: ExHashT,
fn external_addresses(&self) -> Vec<Multiaddr>
[src]
Returns the local external addresses.
fn local_peer_id(&self) -> PeerId
[src]
Returns the local Peer ID.
impl<B: BlockT + 'static, H: ExHashT> SyncOracle for NetworkService<B, H>
[src]
fn is_major_syncing(&mut self) -> bool
[src]
fn is_offline(&mut self) -> bool
[src]
impl<'a, B: BlockT + 'static, H: ExHashT> SyncOracle for &'a NetworkService<B, H>
[src]
fn is_major_syncing(&mut self) -> bool
[src]
fn is_offline(&mut self) -> bool
[src]
Auto Trait Implementations
impl<B, H> !RefUnwindSafe for NetworkService<B, H>
impl<B, H> Send for NetworkService<B, H> where
<B as Block>::Hash: Send,
<B as Block>::Header: Header,
<<B as Block>::Header as Header>::Number: Send,
<B as Block>::Hash: Send,
<B as Block>::Header: Header,
<<B as Block>::Header as Header>::Number: Send,
impl<B, H> Sync for NetworkService<B, H> where
<B as Block>::Hash: Send,
<B as Block>::Header: Header,
<<B as Block>::Header as Header>::Number: Send,
<B as Block>::Hash: Send,
<B as Block>::Header: Header,
<<B as Block>::Header as Header>::Number: Send,
impl<B, H> Unpin for NetworkService<B, H> where
H: Unpin,
<B as Block>::Header: Header,
H: Unpin,
<B as Block>::Header: Header,
impl<B, H> !UnwindSafe for NetworkService<B, H>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> CheckedConversion for T
[src]
fn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
[src]
Self: TryFrom<T>,
fn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
[src]
Self: TryInto<T>,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, Outer> IsWrappedBy<Outer> for T where
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
[src]
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
fn from_ref(outer: &Outer) -> &T
[src]
Get a reference to the inner from the outer.
fn from_mut(outer: &mut Outer) -> &mut T
[src]
Get a mutable reference to the inner from the outer.
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> SaturatedConversion for T
[src]
fn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
[src]
Self: UniqueSaturatedFrom<T>,
fn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
[src]
Self: UniqueSaturatedInto<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
[src]
T: UncheckedFrom<S>,
fn unchecked_into(self) -> T
[src]
impl<T, S> UniqueSaturatedInto<T> for S where
S: TryInto<T>,
T: Bounded,
[src]
S: TryInto<T>,
T: Bounded,
fn unique_saturated_into(self) -> T
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,