network

package
v0.16.3 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2024 License: Apache-2.0, MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ProtocolBitswapNoVers is equivalent to the legacy bitswap protocol
	ProtocolBitswapNoVers = internal.ProtocolBitswapNoVers
	// ProtocolBitswapOneZero is the prefix for the legacy bitswap protocol
	ProtocolBitswapOneZero = internal.ProtocolBitswapOneZero
	// ProtocolBitswapOneOne is the the prefix for version 1.1.0
	ProtocolBitswapOneOne = internal.ProtocolBitswapOneOne
	// ProtocolBitswap is the current version of the bitswap protocol: 1.2.0
	ProtocolBitswap = internal.ProtocolBitswap
)

Functions

This section is empty.

Types

type BitSwapNetwork

type BitSwapNetwork interface {
	Self() peer.ID

	// SendMessage sends a BitSwap message to a peer.
	SendMessage(
		context.Context,
		peer.ID,
		bsmsg.BitSwapMessage) error

	// Start registers the Reciver and starts handling new messages, connectivity events, etc.
	Start(...Receiver)
	// Stop stops the network service.
	Stop()

	ConnectTo(context.Context, peer.ID) error
	DisconnectFrom(context.Context, peer.ID) error

	NewMessageSender(context.Context, peer.ID, *MessageSenderOpts) (MessageSender, error)

	ConnectionManager() connmgr.ConnManager

	Stats() Stats

	Routing

	Pinger
}

BitSwapNetwork provides network connectivity for BitSwap sessions.

func NewFromIpfsHost

func NewFromIpfsHost(host host.Host, r routing.ContentRouting, opts ...NetOpt) BitSwapNetwork

NewFromIpfsHost returns a BitSwapNetwork supported by underlying IPFS host.

type ConnectionListener

type ConnectionListener interface {
	PeerConnected(peer.ID)
	PeerDisconnected(peer.ID)
}

type MessageSender

type MessageSender interface {
	SendMsg(context.Context, bsmsg.BitSwapMessage) error
	Close() error
	Reset() error
	// Indicates whether the remote peer supports HAVE / DONT_HAVE messages
	SupportsHave() bool
}

MessageSender is an interface for sending a series of messages over the bitswap network

type MessageSenderOpts

type MessageSenderOpts struct {
	MaxRetries       int
	SendTimeout      time.Duration
	SendErrorBackoff time.Duration
}

type NetOpt

type NetOpt func(*Settings)

func Prefix

func Prefix(prefix protocol.ID) NetOpt

func SupportedProtocols

func SupportedProtocols(protos []protocol.ID) NetOpt

type Pinger

type Pinger interface {
	// Ping a peer
	Ping(context.Context, peer.ID) ping.Result
	// Get the average latency of all pings
	Latency(peer.ID) time.Duration
}

Pinger is an interface to ping a peer and get the average latency of all pings

type Receiver

type Receiver interface {
	ReceiveMessage(
		ctx context.Context,
		sender peer.ID,
		incoming bsmsg.BitSwapMessage)

	ReceiveError(error)

	// Connected/Disconnected warns bitswap about peer connections.
	PeerConnected(peer.ID)
	PeerDisconnected(peer.ID)
}

Receiver is an interface that can receive messages from the BitSwapNetwork.

type Routing

type Routing interface {
	// FindProvidersAsync returns a channel of providers for the given key.
	FindProvidersAsync(context.Context, cid.Cid, int) <-chan peer.ID

	// Provide provides the key to the network.
	Provide(context.Context, cid.Cid) error
}

Routing is an interface to providing and finding providers on a bitswap network.

type Settings

type Settings struct {
	ProtocolPrefix     protocol.ID
	SupportedProtocols []protocol.ID
}

type Stats

type Stats struct {
	MessagesSent  uint64
	MessagesRecvd uint64
}

Stats is a container for statistics about the bitswap network the numbers inside are specific to bitswap, and not any other protocols using the same underlying network.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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