dht

package
v0.0.0-...-c9e5fdf Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2014 License: MIT Imports: 20 Imported by: 0

Documentation

Overview

package dht implements a distributed hash table that satisfies the ipfs routing interface. This DHT is modeled after kademlia with Coral and S/Kademlia modifications.

Index

Constants

This section is empty.

Variables

View Source
var AlphaValue = 3

Alpha is the concurrency factor for asynchronous requests.

View Source
var CloserPeerCount = 4

The number of closer peers to send on requests.

View Source
var KValue = 10

K is the maximum number of requests to perform before returning failure.

View Source
var PoolSize = 6

Pool size is the number of nodes used for group find/set RPC calls

Functions

This section is empty.

Types

type IpfsDHT

type IpfsDHT struct {
	ctxc.ContextCloser
	// contains filtered or unexported fields
}

IpfsDHT is an implementation of Kademlia with Coral and S/Kademlia modifications. It is used to implement the base IpfsRouting module.

func NewDHT

func NewDHT(ctx context.Context, p peer.Peer, ps peer.Peerstore, dialer inet.Dialer, sender inet.Sender, dstore ds.Datastore) *IpfsDHT

NewDHT creates a new DHT object with the given peer as the 'local' host

func (*IpfsDHT) Bootstrap

func (dht *IpfsDHT) Bootstrap(ctx context.Context)

Bootstrap builds up list of peers by requesting random peer IDs

func (*IpfsDHT) Connect

func (dht *IpfsDHT) Connect(ctx context.Context, npeer peer.Peer) (peer.Peer, error)

Connect to a new peer at the given address, ping and add to the routing table

func (*IpfsDHT) FindLocal

func (dht *IpfsDHT) FindLocal(id peer.ID) (peer.Peer, *kb.RoutingTable)

FindLocal looks for a peer with a given ID connected to this dht and returns the peer and the table it was found in.

func (*IpfsDHT) FindPeer

func (dht *IpfsDHT) FindPeer(ctx context.Context, id peer.ID) (peer.Peer, error)

Find specific Peer FindPeer searches for a peer with given ID.

func (*IpfsDHT) FindProvidersAsync

func (dht *IpfsDHT) FindProvidersAsync(ctx context.Context, key u.Key, count int) <-chan peer.Peer

func (*IpfsDHT) GetValue

func (dht *IpfsDHT) GetValue(ctx context.Context, key u.Key) ([]byte, error)

GetValue searches for the value corresponding to given Key. If the search does not succeed, a multiaddr string of a closer peer is returned along with util.ErrSearchIncomplete

func (*IpfsDHT) HandleMessage

func (dht *IpfsDHT) HandleMessage(ctx context.Context, mes msg.NetMessage) msg.NetMessage

HandleMessage implements the inet.Handler interface.

func (*IpfsDHT) Ping

func (dht *IpfsDHT) Ping(ctx context.Context, p peer.Peer) error

Ping a peer, log the time it took

func (*IpfsDHT) PingRoutine

func (dht *IpfsDHT) PingRoutine(t time.Duration)

PingRoutine periodically pings nearest neighbors.

func (*IpfsDHT) Provide

func (dht *IpfsDHT) Provide(ctx context.Context, key u.Key) error

Provide makes this node announce that it can provide a value for the given key

func (*IpfsDHT) PutValue

func (dht *IpfsDHT) PutValue(ctx context.Context, key u.Key, value []byte) error

PutValue adds value corresponding to given Key. This is the top level "Store" operation of the DHT

func (*IpfsDHT) Update

func (dht *IpfsDHT) Update(p peer.Peer)

Update signals to all routingTables to Update their last-seen status on the given peer.

type ProviderManager

type ProviderManager struct {
	ctxc.ContextCloser
	// contains filtered or unexported fields
}

func NewProviderManager

func NewProviderManager(ctx context.Context, local peer.ID) *ProviderManager

func (*ProviderManager) AddProvider

func (pm *ProviderManager) AddProvider(k u.Key, val peer.Peer)

func (*ProviderManager) GetLocal

func (pm *ProviderManager) GetLocal() []u.Key

func (*ProviderManager) GetProviders

func (pm *ProviderManager) GetProviders(k u.Key) []peer.Peer

Directories

Path Synopsis
Package dht_pb is a generated protocol buffer package.
Package dht_pb is a generated protocol buffer package.

Jump to

Keyboard shortcuts

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