Struct libp2p_networking::network::node::handle::NetworkNodeHandle
source · pub struct NetworkNodeHandle<T: NodeType> {
network_config: NetworkNodeConfig<T>,
send_network: UnboundedSender<ClientRequest>,
listen_addr: Multiaddr,
peer_id: PeerId,
id: usize,
}
Expand description
A handle containing:
- A reference to the state
- Controls for the swarm
Fields§
§network_config: NetworkNodeConfig<T>
network configuration
send_network: UnboundedSender<ClientRequest>
send an action to the networkbehaviour
listen_addr: Multiaddr
the local address we’re listening on
peer_id: PeerId
the peer id of the networkbehaviour
id: usize
human readable id
Implementations§
source§impl<T: NodeType> NetworkNodeHandle<T>
impl<T: NodeType> NetworkNodeHandle<T>
sourcepub async fn shutdown(&self) -> Result<(), NetworkError>
pub async fn shutdown(&self) -> Result<(), NetworkError>
Cleanly shuts down a swarm node This is done by sending a message to the swarm itself to spin down
sourcepub fn begin_bootstrap(&self) -> Result<(), NetworkError>
pub fn begin_bootstrap(&self) -> Result<(), NetworkError>
Notify the network to begin the bootstrap process
§Errors
If unable to send via send_network
. This should only happen
if the network is shut down.
sourcepub fn listen_addr(&self) -> Multiaddr
pub fn listen_addr(&self) -> Multiaddr
Get a reference to the network node handle’s listen addr.
sourcepub async fn print_routing_table(&self) -> Result<(), NetworkError>
pub async fn print_routing_table(&self) -> Result<(), NetworkError>
Print out the routing table used by kademlia NOTE: only for debugging purposes currently
§Errors
if the client has stopped listening for a response
sourcepub async fn wait_to_connect(
&self,
num_required_peers: usize,
node_id: usize,
) -> Result<(), NetworkError>
pub async fn wait_to_connect( &self, num_required_peers: usize, node_id: usize, ) -> Result<(), NetworkError>
Wait until at least num_peers
have connected
§Errors
If the channel closes before the result can be sent back
sourcepub async fn lookup_pid(&self, peer_id: PeerId) -> Result<(), NetworkError>
pub async fn lookup_pid(&self, peer_id: PeerId) -> Result<(), NetworkError>
Look up a peer’s addresses in kademlia
NOTE: this should always be called before any request_response
is initiated
§Errors
if the client has stopped listening for a response
sourcepub async fn lookup_node(
&self,
key: &[u8],
dht_timeout: Duration,
) -> Result<PeerId, NetworkError>
pub async fn lookup_node( &self, key: &[u8], dht_timeout: Duration, ) -> Result<PeerId, NetworkError>
Looks up a node’s PeerId
by its staking key. Is authenticated through
get_record
assuming each record should be signed.
§Errors
If the DHT lookup fails
sourcepub async fn put_record(
&self,
key: RecordKey,
value: RecordValue<T::SignatureKey>,
) -> Result<(), NetworkError>
pub async fn put_record( &self, key: RecordKey, value: RecordValue<T::SignatureKey>, ) -> Result<(), NetworkError>
Insert a record into the kademlia DHT
§Errors
- Will return
NetworkError::FailedToSerialize
when unable to serialize the key or value
sourcepub async fn get_record(
&self,
key: RecordKey,
retry_count: u8,
) -> Result<Vec<u8>, NetworkError>
pub async fn get_record( &self, key: RecordKey, retry_count: u8, ) -> Result<Vec<u8>, NetworkError>
Receive a record from the kademlia DHT if it exists. Must be replicated on at least 2 nodes
§Errors
- Will return
NetworkError::FailedToSerialize
when unable to serialize the key - Will return
NetworkError::FailedToDeserialize
when unable to deserialize the returned value
sourcepub async fn get_record_timeout(
&self,
key: RecordKey,
timeout_duration: Duration,
) -> Result<Vec<u8>, NetworkError>
pub async fn get_record_timeout( &self, key: RecordKey, timeout_duration: Duration, ) -> Result<Vec<u8>, NetworkError>
Get a record from the kademlia DHT with a timeout
§Errors
- Will return
NetworkError::Timeout
when times out - Will return
NetworkError::FailedToSerialize
when unable to serialize the key or value - Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub async fn put_record_timeout(
&self,
key: RecordKey,
value: RecordValue<T::SignatureKey>,
timeout_duration: Duration,
) -> Result<(), NetworkError>
pub async fn put_record_timeout( &self, key: RecordKey, value: RecordValue<T::SignatureKey>, timeout_duration: Duration, ) -> Result<(), NetworkError>
Insert a record into the kademlia DHT with a timeout
§Errors
- Will return
NetworkError::Timeout
when times out - Will return
NetworkError::FailedToSerialize
when unable to serialize the key or value - Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub async fn subscribe(&self, topic: String) -> Result<(), NetworkError>
pub async fn subscribe(&self, topic: String) -> Result<(), NetworkError>
Subscribe to a topic
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub async fn unsubscribe(&self, topic: String) -> Result<(), NetworkError>
pub async fn unsubscribe(&self, topic: String) -> Result<(), NetworkError>
Unsubscribe from a topic
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub fn ignore_peers(&self, peers: Vec<PeerId>) -> Result<(), NetworkError>
pub fn ignore_peers(&self, peers: Vec<PeerId>) -> Result<(), NetworkError>
Ignore peers
when pruning
e.g. maintain their connection
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub fn direct_request(
&self,
pid: PeerId,
msg: &[u8],
) -> Result<(), NetworkError>
pub fn direct_request( &self, pid: PeerId, msg: &[u8], ) -> Result<(), NetworkError>
Make a direct request to peer_id
containing msg
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed - Will return
NetworkError::FailedToSerialize
when unable to serializemsg
sourcepub fn direct_request_no_serialize(
&self,
pid: PeerId,
contents: Vec<u8>,
) -> Result<(), NetworkError>
pub fn direct_request_no_serialize( &self, pid: PeerId, contents: Vec<u8>, ) -> Result<(), NetworkError>
Make a direct request to peer_id
containing msg
without serializing
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed - Will return
NetworkError::FailedToSerialize
when unable to serializemsg
sourcepub fn direct_response(
&self,
chan: ResponseChannel<Vec<u8>>,
msg: &[u8],
) -> Result<(), NetworkError>
pub fn direct_response( &self, chan: ResponseChannel<Vec<u8>>, msg: &[u8], ) -> Result<(), NetworkError>
Reply with msg
to a request over chan
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed - Will return
NetworkError::FailedToSerialize
when unable to serializemsg
sourcepub fn prune_peer(&self, pid: PeerId) -> Result<(), NetworkError>
pub fn prune_peer(&self, pid: PeerId) -> Result<(), NetworkError>
sourcepub fn gossip(&self, topic: String, msg: &[u8]) -> Result<(), NetworkError>
pub fn gossip(&self, topic: String, msg: &[u8]) -> Result<(), NetworkError>
Gossip a message to peers
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed - Will return
NetworkError::FailedToSerialize
when unable to serializemsg
sourcepub fn gossip_no_serialize(
&self,
topic: String,
msg: Vec<u8>,
) -> Result<(), NetworkError>
pub fn gossip_no_serialize( &self, topic: String, msg: Vec<u8>, ) -> Result<(), NetworkError>
Gossip a message to peers without serializing
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed - Will return
NetworkError::FailedToSerialize
when unable to serializemsg
sourcepub fn add_known_peers(
&self,
known_peers: Vec<(PeerId, Multiaddr)>,
) -> Result<(), NetworkError>
pub fn add_known_peers( &self, known_peers: Vec<(PeerId, Multiaddr)>, ) -> Result<(), NetworkError>
Tell libp2p about known network nodes
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcefn send_request(&self, req: ClientRequest) -> Result<(), NetworkError>
fn send_request(&self, req: ClientRequest) -> Result<(), NetworkError>
Send a client request to the network
§Errors
- Will return
NetworkError::ChannelSendError
when underlyingNetworkNode
has been killed
sourcepub async fn num_connected(&self) -> Result<usize, NetworkError>
pub async fn num_connected(&self) -> Result<usize, NetworkError>
sourcepub async fn connected_pids(&self) -> Result<HashSet<PeerId>, NetworkError>
pub async fn connected_pids(&self) -> Result<HashSet<PeerId>, NetworkError>
sourcepub fn config(&self) -> &NetworkNodeConfig<T>
pub fn config(&self) -> &NetworkNodeConfig<T>
Return a reference to the network config
Trait Implementations§
source§impl<T: Clone + NodeType> Clone for NetworkNodeHandle<T>
impl<T: Clone + NodeType> Clone for NetworkNodeHandle<T>
source§fn clone(&self) -> NetworkNodeHandle<T>
fn clone(&self) -> NetworkNodeHandle<T>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl<T> Freeze for NetworkNodeHandle<T>
impl<T> !RefUnwindSafe for NetworkNodeHandle<T>
impl<T> Send for NetworkNodeHandle<T>
impl<T> Sync for NetworkNodeHandle<T>
impl<T> Unpin for NetworkNodeHandle<T>
impl<T> !UnwindSafe for NetworkNodeHandle<T>
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§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> 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>
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>
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> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.