Version: v0.3.5 Latest Latest

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

Go to latest
Published: Jun 12, 2015 License: MIT Imports: 25 Imported by: 0




This section is empty.


This section is empty.


func ID

func ID(c Conn) string

ID returns the ID of a given Conn.

func MultiaddrNetMatch

func MultiaddrNetMatch(tgt ma.Multiaddr, srcs []ma.Multiaddr) ma.Multiaddr

MultiaddrNetMatch returns the first Multiaddr found to match network.

func MultiaddrProtocolsMatch

func MultiaddrProtocolsMatch(a, b ma.Multiaddr) bool

MultiaddrProtocolsMatch returns whether two multiaddrs match in protocol stacks.

func ReleaseBuffer

func ReleaseBuffer(b []byte)

ReleaseBuffer puts the given byte array back into the buffer pool, first verifying that it is the correct size

func String

func String(c Conn, typ string) string

String returns the user-friendly String representation of a conn


type Conn

type Conn interface {

	// ID is an identifier unique to this connection.
	ID() string

	// can't just say "net.Conn" cause we have duplicate methods.
	LocalAddr() net.Addr
	RemoteAddr() net.Addr
	SetDeadline(t time.Time) error
	SetReadDeadline(t time.Time) error
	SetWriteDeadline(t time.Time) error


Conn is a generic message-based Peer-to-Peer connection.

type ConnWrapper added in v0.3.2

type ConnWrapper func(manet.Conn) manet.Conn

ConnWrapper is any function that wraps a raw multiaddr connection

type Dialer

type Dialer struct {

	// Dialer is an optional manet.Dialer to use.
	Dialer manet.Dialer

	// LocalPeer is the identity of the local Peer.
	LocalPeer peer.ID

	// LocalAddrs is a set of local addresses to use.
	LocalAddrs []ma.Multiaddr

	// PrivateKey used to initialize a secure connection.
	// Warning: if PrivateKey is nil, connection will not be secured.
	PrivateKey ic.PrivKey

	// Wrapper to wrap the raw connection (optional)
	Wrapper func(manet.Conn) manet.Conn

Dialer is an object that can open connections. We could have a "convenience" Dial function as before, but it would have many arguments, as dialing is no longer simple (need a peerstore, a local peer, a context, a network, etc)

func (*Dialer) Dial

func (d *Dialer) Dial(ctx context.Context, raddr ma.Multiaddr, remote peer.ID) (Conn, error)

Dial connects to a peer over a particular address Ensures raddr is part of peer.Addresses() Example: d.DialAddr(ctx, peer.Addresses()[0], peer)

func (*Dialer) String

func (d *Dialer) String() string

String returns the string rep of d.

type Listener

type Listener interface {

	// Accept waits for and returns the next connection to the listener.
	Accept() (net.Conn, error)

	// Addr is the local address
	Addr() net.Addr

	// Multiaddr is the local multiaddr address
	Multiaddr() ma.Multiaddr

	// LocalPeer is the identity of the local Peer.
	LocalPeer() peer.ID

	// Close closes the listener.
	// Any blocked Accept operations will be unblocked and return errors.
	Close() error

Listener is an object that can accept connections. It matches net.Listener

func Listen

func Listen(ctx context.Context, addr ma.Multiaddr, local peer.ID, sk ic.PrivKey) (Listener, error)

Listen listens on the particular multiaddr, with given peer and peerstore.

type ListenerConnWrapper added in v0.3.2

type ListenerConnWrapper interface {

type Map

type Map map[key.Key]Conn

Map maps Keys (Peer.IDs) to Connections.

type PeerConn

type PeerConn interface {

	// LocalPeer (this side) ID, PrivateKey, and Address
	LocalPeer() peer.ID
	LocalPrivateKey() ic.PrivKey
	LocalMultiaddr() ma.Multiaddr

	// RemotePeer ID, PublicKey, and Address
	RemotePeer() peer.ID
	RemotePublicKey() ic.PubKey
	RemoteMultiaddr() ma.Multiaddr

Jump to

Keyboard shortcuts

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