dual

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package dual provides an implementation of a split or "dual" dht, where two parallel instances are maintained for the global internet and the local LAN respectively.

Index

Constants

View Source
const LanExtension protocol.ID = "/lan"

LanExtension is used to differentiate local protocol requests from those on the WAN DHT.

Variables

This section is empty.

Functions

This section is empty.

Types

type DHT

type DHT struct {
	WAN *dht.DeP2PDHT
	LAN *dht.DeP2PDHT
}

DHT implements the routing interface to provide two concrete DHT implementationts for use in DeP2P that are used to support both global network users and disjoint LAN usecases.

func New

func New(ctx context.Context, h host.Host, options ...Option) (*DHT, error)

New creates a new DualDHT instance. Options provided are forwarded on to the two concrete DeP2PDHT internal constructions, modulo additional options used by the Dual DHT to enforce the LAN-vs-WAN distinction. Note: query or routing table functional options provided as arguments to this function will be overriden by this constructor.

func (*DHT) Bootstrap

func (dht *DHT) Bootstrap(ctx context.Context) (err error)

Bootstrap allows callers to hint to the routing system to get into a Boostrapped state and remain there.

func (*DHT) Close

func (dht *DHT) Close() error

Close closes the DHT context.

func (*DHT) FindPeer

func (dht *DHT) FindPeer(ctx context.Context, pid peer.ID) (pi peer.AddrInfo, err error)

FindPeer searches for a peer with given ID Note: with signed peer records, we can change this to short circuit once either DHT returns.

func (*DHT) FindProvidersAsync

func (dht *DHT) FindProvidersAsync(ctx context.Context, key cid.Cid, count int) (ch <-chan peer.AddrInfo)

FindProvidersAsync searches for peers who are able to provide a given key

func (*DHT) GetPublicKey

func (dht *DHT) GetPublicKey(ctx context.Context, pid peer.ID) (ci.PubKey, error)

GetPublicKey returns the public key for the given peer.

func (*DHT) GetRoutingTableDiversityStats

func (dht *DHT) GetRoutingTableDiversityStats() []peerdiversity.CplDiversityStats

GetRoutingTableDiversityStats fetches the Routing Table Diversity Stats.

func (*DHT) GetValue

func (d *DHT) GetValue(ctx context.Context, key string, opts ...routing.Option) (result []byte, err error)

GetValue searches for the value corresponding to given Key.

func (*DHT) Provide

func (dht *DHT) Provide(ctx context.Context, key cid.Cid, announce bool) (err error)

Provide adds the given cid to the content routing system.

func (*DHT) PutValue

func (dht *DHT) PutValue(ctx context.Context, key string, val []byte, opts ...routing.Option) (err error)

PutValue adds value corresponding to given Key.

func (*DHT) SearchValue

func (dht *DHT) SearchValue(ctx context.Context, key string, opts ...routing.Option) (ch <-chan []byte, err error)

SearchValue searches for better values from this value

func (*DHT) WANActive

func (dht *DHT) WANActive() bool

WANActive returns true when the WAN DHT is active (has peers).

type Option

type Option func(*config) error

Option is an option used to configure the Dual DHT.

func DHTOption

func DHTOption(opts ...dht.Option) Option

DHTOption applies the given DHT options to both the WAN and the LAN DHTs.

func LanDHTOption

func LanDHTOption(opts ...dht.Option) Option

LanDHTOption applies the given DHT options to the LAN DHT.

func WanDHTOption

func WanDHTOption(opts ...dht.Option) Option

WanDHTOption applies the given DHT options to the WAN DHT.

Jump to

Keyboard shortcuts

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