p2p

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2020 License: BSD-3-Clause Imports: 11 Imported by: 28

Documentation

Index

Constants

View Source
const (
	HeaderNameTracingSpanContext = "tracing-span-context"
)

Common header names.

Variables

View Source
var (
	// ErrPeerNotFound should be returned by p2p service methods when the requested
	// peer is not found.
	ErrPeerNotFound = errors.New("peer not found")
	// ErrAlreadyConnected is returned if connect was called for already connected node.
	ErrAlreadyConnected = errors.New("already connected")
)

Functions

func Discover

func Discover(ctx context.Context, addr ma.Multiaddr, f func(ma.Multiaddr) (bool, error)) (bool, error)

func NewConnectionBackoffError

func NewConnectionBackoffError(err error, tryAfter time.Time) error

NewConnectionBackoffError creates new `ConnectionBackoffError` with provided underlying error and `tryAfter` timestamp.

func NewDisconnectError

func NewDisconnectError(err error) error

NewDisconnectError wraps error and creates a special error that is treated specially by p2p. It causes peer to disconnect.

func NewSwarmStreamName

func NewSwarmStreamName(protocol, version, stream string) string

NewSwarmStreamName constructs a libp2p compatible stream name out of protocol name and version and stream name.

Types

type ConnectionBackoffError

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

ConnectionBackoffError indicates that connection calls will not be executed until `tryAfter` timetamp. The reason is provided in the wrappped error.

func (*ConnectionBackoffError) Error

func (e *ConnectionBackoffError) Error() string

Error implements function of the standard go error interface.

func (*ConnectionBackoffError) TryAfter

func (e *ConnectionBackoffError) TryAfter() time.Time

TryAfter returns a tryAfter timetamp.

func (*ConnectionBackoffError) Unwrap

func (e *ConnectionBackoffError) Unwrap() error

Unwrap returns an underlying error.

type DebugService added in v0.2.0

type DebugService interface {
	Service
	SetWelcomeMessage(val string) error
	GetWelcomeMessage() string
}

DebugService extends the Service with method used for debugging.

type DisconnectError

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

DisconnectError is an error that is specifically handled inside p2p. If returned by specific protocol handler it causes peer disconnect.

func (*DisconnectError) Error

func (e *DisconnectError) Error() string

Error implements function of the standard go error interface.

func (*DisconnectError) Unwrap

func (e *DisconnectError) Unwrap() error

Unwrap returns an underlying error.

type HandlerFunc

type HandlerFunc func(context.Context, Peer, Stream) error

HandlerFunc handles a received Stream from a Peer.

type HandlerMiddleware

type HandlerMiddleware func(HandlerFunc) HandlerFunc

HandlerMiddleware decorates a HandlerFunc by returning a new one.

type Headers

type Headers map[string][]byte

Headers represents a collection of p2p header key value pairs.

type HeadlerFunc

type HeadlerFunc func(Headers) Headers

HeadlerFunc is returning response headers based on the received request headers.

type IncompatibleStreamError

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

IncompatibleStreamError is the error that should be returned by p2p service NewStream method when the stream or its version is not supported.

func NewIncompatibleStreamError

func NewIncompatibleStreamError(err error) *IncompatibleStreamError

NewIncompatibleStreamError wraps the error that is the cause of stream incompatibility with IncompatibleStreamError that it can be detected and returns it.

func (*IncompatibleStreamError) Error

func (e *IncompatibleStreamError) Error() string

Error implements function of the standard go error interface.

func (*IncompatibleStreamError) Unwrap

func (e *IncompatibleStreamError) Unwrap() error

Unwrap returns an underlying error.

type Peer

type Peer struct {
	Address swarm.Address `json:"address"`
}

Peer holds information about a Peer.

type ProtocolSpec

type ProtocolSpec struct {
	Name        string
	Version     string
	StreamSpecs []StreamSpec
}

ProtocolSpec defines a collection of Stream specifications with handlers.

type Service

type Service interface {
	AddProtocol(ProtocolSpec) error
	// ConnectNotify connects to the given multiaddress and notifies the topology once the
	// peer has been successfully connected.
	ConnectNotify(ctx context.Context, addr ma.Multiaddr) (address *bzz.Address, err error)
	// Connect to a peer but do not notify topology about the established connection.
	Connect(ctx context.Context, addr ma.Multiaddr) (address *bzz.Address, err error)
	Disconnect(overlay swarm.Address) error
	Peers() []Peer
	AddNotifier(topology.Notifier)
	Addresses() ([]ma.Multiaddr, error)
}

Service provides methods to handle p2p Peers and Protocols.

type Stream

type Stream interface {
	io.ReadWriter
	io.Closer
	Headers() Headers
	FullClose() error
	Reset() error
}

Stream represent a bidirectional data Stream.

type StreamSpec

type StreamSpec struct {
	Name    string
	Handler HandlerFunc
	Headler HeadlerFunc
}

StreamSpec defines a Stream handling within the protocol.

type Streamer

type Streamer interface {
	NewStream(ctx context.Context, address swarm.Address, h Headers, protocol, version, stream string) (Stream, error)
}

Streamer is able to create a new Stream.

Directories

Path Synopsis
internal/handshake/pb
Package pb holds only Protocol Buffer definitions and generated code.
Package pb holds only Protocol Buffer definitions and generated code.
internal/headers/pb
Package pb holds only Protocol Buffer definitions and generated code.
Package pb holds only Protocol Buffer definitions and generated code.
internal/pb
Package pb holds only Protocol Buffer definitions and generated code for testing purposes.
Package pb holds only Protocol Buffer definitions and generated code for testing purposes.

Jump to

Keyboard shortcuts

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