decision

package
v0.0.0-...-795e242 Latest Latest
Warning

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

Go to latest
Published: Oct 20, 2015 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

package decision implements the decision engine for the bitswap service.

Index

Constants

This section is empty.

Variables

View Source
var FIFO = func(a, b *peerRequestTask) bool {
	return a.created.Before(b.created)
}

FIFO is a basic task comparator that returns tasks in the order created.

View Source
var V1 = func(a, b *peerRequestTask) bool {
	if a.Target == b.Target {
		return a.Entry.Priority > b.Entry.Priority
	}
	return FIFO(a, b)
}

V1 respects the target peer's wantlist priority. For tasks involving different peers, the oldest task is prioritized.

Functions

This section is empty.

Types

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

func NewEngine

func NewEngine(ctx context.Context, bs bstore.Blockstore) *Engine

func (*Engine) MessageReceived

func (e *Engine) MessageReceived(p peer.ID, m bsmsg.BitSwapMessage) error

MessageReceived performs book-keeping. Returns error if passed invalid arguments.

func (*Engine) MessageSent

func (e *Engine) MessageSent(p peer.ID, m bsmsg.BitSwapMessage) error

func (*Engine) Outbox

func (e *Engine) Outbox() <-chan (<-chan *Envelope)

Outbox returns a channel of one-time use Envelope channels.

func (*Engine) PeerDisconnected

func (e *Engine) PeerDisconnected(p peer.ID)

func (*Engine) Peers

func (e *Engine) Peers() []peer.ID

Returns a slice of Peers with whom the local node has active sessions

func (*Engine) WantlistForPeer

func (e *Engine) WantlistForPeer(p peer.ID) (out []wl.Entry)

type Envelope

type Envelope struct {
	// Peer is the intended recipient
	Peer peer.ID

	// Block is the payload
	Block *blocks.Block

	// A callback to notify the decision queue that the task is complete
	Sent func()
}

Envelope contains a message for a Peer

Jump to

Keyboard shortcuts

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