pub struct Service<N: RawNetwork, AD: Data, BSD: Data> {
network: N,
messages_from_authentication_user: UnboundedReceiver<Command<AD, N::PeerId>>,
messages_from_block_sync_user: UnboundedReceiver<Command<BSD, N::PeerId>>,
messages_for_authentication_user: UnboundedSender<(AD, N::PeerId)>,
messages_for_block_sync_user: UnboundedSender<(BSD, N::PeerId)>,
authentication_connected_peers: HashSet<N::PeerId>,
authentication_peer_senders: HashMap<N::PeerId, Sender<AD>>,
block_sync_connected_peers: HashSet<N::PeerId>,
block_sync_peer_senders: HashMap<N::PeerId, Sender<BSD>>,
spawn_handle: SpawnHandle,
metrics: Metrics,
timestamp_of_last_log_that_channel_is_full: HashMap<(N::PeerId, Protocol), Instant>,
}
Expand description
A service managing all the direct interaction with the underlying network implementation. It handles:
- Incoming network events
- Messages are forwarded to the user.
- Various forms of (dis)connecting, keeping track of all currently connected nodes.
- Outgoing messages, sending them out, using 1.2. to broadcast.
Fields§
§network: N
§messages_from_authentication_user: UnboundedReceiver<Command<AD, N::PeerId>>
§messages_from_block_sync_user: UnboundedReceiver<Command<BSD, N::PeerId>>
§messages_for_authentication_user: UnboundedSender<(AD, N::PeerId)>
§messages_for_block_sync_user: UnboundedSender<(BSD, N::PeerId)>
§authentication_connected_peers: HashSet<N::PeerId>
§authentication_peer_senders: HashMap<N::PeerId, Sender<AD>>
§block_sync_connected_peers: HashSet<N::PeerId>
§block_sync_peer_senders: HashMap<N::PeerId, Sender<BSD>>
§spawn_handle: SpawnHandle
§metrics: Metrics
§timestamp_of_last_log_that_channel_is_full: HashMap<(N::PeerId, Protocol), Instant>
Implementations§
source§impl<N: RawNetwork, AD: Data, BSD: Data> Service<N, AD, BSD>
impl<N: RawNetwork, AD: Data, BSD: Data> Service<N, AD, BSD>
pub fn new( network: N, spawn_handle: SpawnHandle, metrics_registry: Option<Registry> ) -> (Self, impl Network<AD, Error = Error, PeerId = N::PeerId>, impl Network<BSD, Error = Error, PeerId = N::PeerId>)
fn get_authentication_sender( &mut self, peer: &N::PeerId ) -> Option<&mut Sender<AD>>
fn get_block_sync_sender( &mut self, peer: &N::PeerId ) -> Option<&mut Sender<BSD>>
fn peer_sender<D: Data>( &self, peer_id: N::PeerId, receiver: Receiver<D>, protocol: Protocol ) -> impl Future<Output = ()> + Send + 'static
fn possibly_log_that_channel_is_full( &mut self, peer: N::PeerId, protocol: Protocol )
fn send_to_authentication_peer( &mut self, data: AD, peer: N::PeerId ) -> Result<(), SendError>
fn send_to_block_sync_peer( &mut self, data: BSD, peer: N::PeerId ) -> Result<(), SendError>
fn send_authentication_data(&mut self, data: AD, peer_id: N::PeerId)
fn send_block_sync_data(&mut self, data: BSD, peer_id: N::PeerId)
fn protocol_peers(&self, protocol: Protocol) -> &HashSet<N::PeerId>
fn random_peer<'a>( &'a self, peer_ids: &'a HashSet<N::PeerId>, protocol: Protocol ) -> Option<&'a N::PeerId>
fn send_to_random_authentication( &mut self, data: AD, peer_ids: HashSet<N::PeerId> )
fn send_to_random_block_sync(&mut self, data: BSD, peer_ids: HashSet<N::PeerId>)
fn broadcast_authentication(&mut self, data: AD)
fn broadcast_block_sync(&mut self, data: BSD)
fn handle_network_event(&mut self, event: Event<N::PeerId>) -> Result<(), ()>
fn status_report(&self)
pub async fn run(self)
Auto Trait Implementations§
impl<N, AD, BSD> !RefUnwindSafe for Service<N, AD, BSD>
impl<N, AD, BSD> Send for Service<N, AD, BSD>
impl<N, AD, BSD> Sync for Service<N, AD, BSD>
impl<N, AD, BSD> Unpin for Service<N, AD, BSD>
impl<N, AD, BSD> !UnwindSafe for Service<N, AD, BSD>
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.