Go-libp2p-core source code routing.go

Where is the implementation of the provide method defined by the Contentrouting interface in this file? Thank you for your answer

type ContentRouting interface {

// Provide adds the given cid to the content routing system. If 'true' is

// passed, it also announces it, otherwise it is just kept in the local

// accounting of which objects are being provided.

Provide(context.Context, cid.Cid, bool) error

// Search for peers who are able to provide a given key


// When count is 0, this method will return an unbounded number of

// results.

FindProvidersAsync(context.Context, cid.Cid, int) <-chan peer.AddrInfo


The URL for this file is (GitHub - libp2p/go-libp2p-core: Interfaces and abstractions that make up go-libp2p). Can someone tell me where exactly the implementation of the provide function for the “contentrouting” interface definition is
thanks a lot!!!

Hi, Hector! I have a new problem, the same URL, the code in the go-libp2p-core directory, where is the implementation of the network package?A portion of the code for this interface is listed below.
thanks a lot!!!
type Network interface {



// SetStreamHandler sets the handler for new streams opened by the

// remote side. This operation is threadsafe.


// NewStream returns a new stream to given peer p.

// If there is no connection to p, attempts to create one.

NewStream(context.Context, peer.ID) (Stream, error)

// Listen tells the network to start listening on given multiaddrs.

Listen(...ma.Multiaddr) error

// ListenAddresses returns a list of addresses at which this network listens.

ListenAddresses() []ma.Multiaddr

// InterfaceListenAddresses returns a list of addresses at which this network

// listens. It expands "any interface" addresses (/ip4/, /ip6/::) to

// use the known local interfaces.

InterfaceListenAddresses() ([]ma.Multiaddr, error)



// Dialer represents a service that can dial out to peers

// (this is usually just a Network, but other services may not need the whole

// stack, and thus it becomes easier to mock)

type Dialer interface {

// Peerstore returns the internal peerstore

// This is useful to tell the dialer about a new address for a peer.

// Or use one of the public keys found out over the network.

Peerstore() peerstore.Peerstore

// LocalPeer returns the local peer associated with this network

LocalPeer() peer.ID

// DialPeer establishes a connection to a given peer

DialPeer(context.Context, peer.ID) (Conn, error)

// ClosePeer closes the connection to a given peer

ClosePeer(peer.ID) error

// Connectedness returns a state signaling connection capabilities

Connectedness(peer.ID) Connectedness

// Peers returns the peers connected

Peers() []peer.ID

// Conns returns the connections in this Netowrk

Conns() []Conn

// ConnsToPeer returns the connections in this Netowrk for given peer.

ConnsToPeer(p peer.ID) []Conn

// Notify/StopNotify register and unregister a notifiee for signals




Here I think: GitHub - libp2p/go-libp2p-swarm: The libp2p swarm manages groups of connections to peers, and handles incoming and outgoing streams

1 Like