Documentation ¶
Overview ¶
package routing defines the interface for a routing system used by ipfs.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNotFound = errors.New("routing: not found")
ErrNotFound is returned when a search fails to find anything
Functions ¶
func GetPublicKey ¶
func KeyForPublicKey ¶
KeyForPublicKey returns the key used to retrieve public keys from the dht.
Types ¶
type ContentRouting ¶
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 FindProvidersAsync(context.Context, *cid.Cid, int) <-chan pstore.PeerInfo }
ContentRouting is a value provider layer of indirection. It is used to find information about who has what content.
type IpfsRouting ¶
type IpfsRouting interface { ContentRouting PeerRouting ValueStore // Bootstrap allows callers to hint to the routing system to get into a // Boostrapped state Bootstrap(context.Context) error }
IpfsRouting is the combination of different routing types that ipfs uses. It can be satisfied by a single item (such as a DHT) or multiple different pieces that are more optimized to each task.
type PeerRouting ¶
type PeerRouting interface { // Find specific Peer // FindPeer searches for a peer with given ID, returns a pstore.PeerInfo // with relevant addresses. FindPeer(context.Context, peer.ID) (pstore.PeerInfo, error) }
PeerRouting is a way to find information about certain peers. This can be implemented by a simple lookup table, a tracking server, or even a DHT.
type PubKeyFetcher ¶
type RecvdVal ¶
RecvdVal represents a dht value record that has been received from a given peer it is used to track peers with expired records in order to correct them.
type ValueStore ¶
type ValueStore interface { // PutValue adds value corresponding to given Key. PutValue(context.Context, string, []byte) error // GetValue searches for the value corresponding to given Key. GetValue(context.Context, string) ([]byte, error) // GetValues searches for values corresponding to given Key. // // Passing a value of '0' for the count argument will cause the // routing interface to return values only from cached or local storage // and return an error if no cached value is found. // // Passing a value of '1' will return a local value if found, and query // the network for the first value it finds otherwise. // As a result, a value of '1' is mostly useful for cases where the record // in question has only one valid value (such as public keys) GetValues(c context.Context, k string, count int) ([]RecvdVal, error) }