routing

package module
v0.0.0-...-128a8de Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 30, 2017 License: MIT Imports: 6 Imported by: 0

README

go-libp2p-routing

standard-readme compliant

A collection of routing interfaces for go-libp2p

Documenation

See https://godoc.org/github.com/libp2p/go-libp2p-routing.

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

Want to hack on IPFS?

License

MIT

Documentation

Overview

package routing defines the interface for a routing system used by ipfs.

Index

Constants

This section is empty.

Variables

View Source
var ErrNotFound = errors.New("routing: not found")

ErrNotFound is returned when a search fails to find anything

Functions

func GetPublicKey

func GetPublicKey(r ValueStore, ctx context.Context, pkhash []byte) (ci.PubKey, error)

func KeyForPublicKey

func KeyForPublicKey(id peer.ID) string

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 PubKeyFetcher interface {
	GetPublicKey(context.Context, peer.ID) (ci.PubKey, error)
}

type RecvdVal

type RecvdVal struct {
	From peer.ID
	Val  []byte
}

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)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL