topology

package
v0.0.0-...-34ee9b9 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2021 License: BSD-3-Clause Imports: 4 Imported by: 0

Documentation

Overview

Package topology exposes abstractions needed in topology-aware components.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound      = errors.New("no peer found")
	ErrWantSelf      = errors.New("node wants self")
	ErrOversaturated = errors.New("oversaturated")
)

Functions

This section is empty.

Types

type ClosestPeerer

type ClosestPeerer interface {
	// ClosestPeer returns the closest connected peer we have in relation to a
	// given chunk address.
	// This function will ignore peers with addresses provided in skipPeers.
	// Returns topology.ErrWantSelf in case base is the closest to the address.
	ClosestPeer(addr infinity.Address, skipPeers ...infinity.Address) (peerAddr infinity.Address, err error)
}

type Driver

type Driver interface {
	PeerAdder
	ClosestPeerer
	EachPeerer
	NeighborhoodDepth() uint8
	SubscribePeersChange() (c <-chan struct{}, unsubscribe func())
	io.Closer
}

type EachPeerFunc

type EachPeerFunc func(infinity.Address, uint8) (stop, jumpToNext bool, err error)

EachPeerFunc is a callback that is called with a peer and its PO

type EachPeerer

type EachPeerer interface {
	// EachPeer iterates from closest bin to farthest
	EachPeer(EachPeerFunc) error
	// EachPeerRev iterates from farthest bin to closest
	EachPeerRev(EachPeerFunc) error
}

type PeerAdder

type PeerAdder interface {
	// AddPeers is called when peers are added to the topology backlog
	AddPeers(ctx context.Context, addr ...infinity.Address) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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