pub struct Bitswap {
pub connected_peers: HashMap<PeerId, Ledger>,
pub queued_blocks: UnboundedSender<(PeerId, Block)>,
pub stats: HashMap<PeerId, Arc<Stats>>,
/* private fields */
}Expand description
Network behaviour that handles sending and receiving IPFS blocks.
Fields§
§connected_peers: HashMap<PeerId, Ledger>Ledger
queued_blocks: UnboundedSender<(PeerId, Block)>Blocks queued to be sent
stats: HashMap<PeerId, Arc<Stats>>Statistics related to peers.
Implementations§
Source§impl Bitswap
impl Bitswap
Sourcepub fn local_wantlist(&self) -> Vec<(Cid, Priority)>
pub fn local_wantlist(&self) -> Vec<(Cid, Priority)>
Return the wantlist of the local node
Sourcepub fn peer_wantlist(&self, peer: &PeerId) -> Option<Vec<(Cid, Priority)>>
pub fn peer_wantlist(&self, peer: &PeerId) -> Option<Vec<(Cid, Priority)>>
Return the wantlist of a peer, if known
pub fn stats(&self) -> Stats
pub fn peers(&self) -> Vec<PeerId>
Sourcepub fn send_block(&mut self, peer_id: PeerId, block: Block)
pub fn send_block(&mut self, peer_id: PeerId, block: Block)
Sends a block to the peer.
Called from a Strategy.
Sourcepub fn want_block(&mut self, cid: Cid, priority: Priority)
pub fn want_block(&mut self, cid: Cid, priority: Priority)
Queues the wanted block for all peers.
A user request
Sourcepub fn cancel_block(&mut self, cid: &Cid)
pub fn cancel_block(&mut self, cid: &Cid)
Removes the block from our want list and updates all peers.
Can be either a user request or be called when the block was received.
Trait Implementations§
Source§impl NetworkBehaviour for Bitswap
impl NetworkBehaviour for Bitswap
Source§type ProtocolsHandler = OneShotHandler<BitswapConfig, Message, MessageWrapper>
type ProtocolsHandler = OneShotHandler<BitswapConfig, Message, MessageWrapper>
Handler for all the protocols the network behaviour supports.
Source§type OutEvent = BitswapEvent
type OutEvent = BitswapEvent
Event generated by the
NetworkBehaviour and that the swarm will report back.Source§fn new_handler(&mut self) -> Self::ProtocolsHandler
fn new_handler(&mut self) -> Self::ProtocolsHandler
Creates a new
ProtocolsHandler for a connection with a peer. Read moreSource§fn addresses_of_peer(&mut self, _peer_id: &PeerId) -> Vec<Multiaddr>
fn addresses_of_peer(&mut self, _peer_id: &PeerId) -> Vec<Multiaddr>
Addresses that this behaviour is aware of for this specific peer, and that may allow
reaching the peer. Read more
Source§fn inject_connected(&mut self, peer_id: &PeerId)
fn inject_connected(&mut self, peer_id: &PeerId)
Indicates the behaviour that we connected to the node with the given peer id. Read more
Source§fn inject_disconnected(&mut self, peer_id: &PeerId)
fn inject_disconnected(&mut self, peer_id: &PeerId)
Indicates the behaviour that we disconnected from the node with the given peer id. Read more
Source§fn inject_event(
&mut self,
source: PeerId,
_connection: ConnectionId,
message: MessageWrapper,
)
fn inject_event( &mut self, source: PeerId, _connection: ConnectionId, message: MessageWrapper, )
Informs the behaviour about an event generated by the handler dedicated to the peer identified by
peer_id.
for the behaviour. Read moreSource§fn poll(
&mut self,
ctx: &mut Context<'_>,
_: &mut impl PollParameters,
) -> Poll<NetworkBehaviourAction<<<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, Self::OutEvent>>
fn poll( &mut self, ctx: &mut Context<'_>, _: &mut impl PollParameters, ) -> Poll<NetworkBehaviourAction<<<Self::ProtocolsHandler as IntoProtocolsHandler>::Handler as ProtocolsHandler>::InEvent, Self::OutEvent>>
Polls for things that swarm should do. Read more
Source§fn inject_connection_established(
&mut self,
_: &PeerId,
_: &ConnectionId,
_: &ConnectedPoint,
)
fn inject_connection_established( &mut self, _: &PeerId, _: &ConnectionId, _: &ConnectedPoint, )
Informs the behaviour about a newly established connection to a peer.
Source§fn inject_connection_closed(
&mut self,
_: &PeerId,
_: &ConnectionId,
_: &ConnectedPoint,
)
fn inject_connection_closed( &mut self, _: &PeerId, _: &ConnectionId, _: &ConnectedPoint, )
Informs the behaviour about a closed connection to a peer. Read more
Source§fn inject_address_change(
&mut self,
_: &PeerId,
_: &ConnectionId,
_old: &ConnectedPoint,
_new: &ConnectedPoint,
)
fn inject_address_change( &mut self, _: &PeerId, _: &ConnectionId, _old: &ConnectedPoint, _new: &ConnectedPoint, )
Informs the behaviour that the
ConnectedPoint of an existing connection has changed.Source§fn inject_addr_reach_failure(
&mut self,
_peer_id: Option<&PeerId>,
_addr: &Multiaddr,
_error: &dyn Error,
)
fn inject_addr_reach_failure( &mut self, _peer_id: Option<&PeerId>, _addr: &Multiaddr, _error: &dyn Error, )
Indicates to the behaviour that we tried to reach an address, but failed. Read more
Source§fn inject_dial_failure(&mut self, _peer_id: &PeerId)
fn inject_dial_failure(&mut self, _peer_id: &PeerId)
Indicates to the behaviour that we tried to dial all the addresses known for a node, but
failed. Read more
Source§fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
fn inject_new_listen_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that we have started listening on a new multiaddr.
Source§fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
fn inject_expired_listen_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that a new multiaddr we were listening on has expired,
which means that we are no longer listening in it.
Source§fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
fn inject_new_external_addr(&mut self, _addr: &Multiaddr)
Indicates to the behaviour that we have discovered a new external address for us.
Source§fn inject_listener_error(
&mut self,
_id: ListenerId,
_err: &(dyn Error + 'static),
)
fn inject_listener_error( &mut self, _id: ListenerId, _err: &(dyn Error + 'static), )
A listener experienced an error.
Source§fn inject_listener_closed(
&mut self,
_id: ListenerId,
_reason: Result<(), &Error>,
)
fn inject_listener_closed( &mut self, _id: ListenerId, _reason: Result<(), &Error>, )
A listener closed.
Auto Trait Implementations§
impl Freeze for Bitswap
impl !RefUnwindSafe for Bitswap
impl Send for Bitswap
impl Sync for Bitswap
impl Unpin for Bitswap
impl !UnwindSafe for Bitswap
Blanket Implementations§
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
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