peerqueue

package
v0.0.1-alpha Latest Latest
Warning

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

Go to latest
Published: Dec 8, 2017 License: GPL-3.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChanQueue

type ChanQueue struct {
	Queue   PeerQueue
	EnqChan chan<- peer.ID
	DeqChan <-chan peer.ID
}

ChanQueue makes any PeerQueue synchronizable through channels.

func NewChanQueue

func NewChanQueue(ctx context.Context, pq PeerQueue) *ChanQueue

NewChanQueue creates a ChanQueue by wrapping pq.

type PeerQueue

type PeerQueue interface {

	// Len returns the number of items in PeerQueue
	Len() int

	// Enqueue adds this node to the queue.
	Enqueue(peer.ID)

	// Dequeue retrieves the highest (smallest int) priority node
	Dequeue() peer.ID
}

PeerQueue maintains a set of peers ordered according to a metric. Implementations of PeerQueue could order peers based on distances along a KeySpace, latency measurements, trustworthiness, reputation, etc.

func NewXORDistancePQ

func NewXORDistancePQ(from Hash) PeerQueue

NewXORDistancePQ returns a PeerQueue which maintains its peers sorted in terms of their distances to each other in an XORKeySpace (i.e. using XOR as a metric of distance).

Jump to

Keyboard shortcuts

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