go-libp2p-core: github.com/libp2p/go-libp2p-core/mux Index | Files

package mux

import "github.com/libp2p/go-libp2p-core/mux"

Package mux provides stream multiplexing interfaces for libp2p.

For a conceptual overview of stream multiplexing in libp2p, see https://docs.libp2p.io/concepts/stream-multiplexing/

Index

Package Files

mux.go

Variables

var ErrReset = errors.New("stream reset")

ErrReset is returned when reading or writing on a reset stream.

var NoopHandler = func(s MuxedStream) { s.Reset() }

NoopHandler do nothing. Resets streams as soon as they are opened.

type Multiplexer Uses

type Multiplexer interface {

    // NewConn constructs a new connection
    NewConn(c net.Conn, isServer bool) (MuxedConn, error)
}

Multiplexer wraps a net.Conn with a stream multiplexing implementation and returns a MuxedConn that supports opening multiple streams over the underlying net.Conn

type MuxedConn Uses

type MuxedConn interface {
    // Close closes the stream muxer and the the underlying net.Conn.
    io.Closer

    // IsClosed returns whether a connection is fully closed, so it can
    // be garbage collected.
    IsClosed() bool

    // OpenStream creates a new stream.
    OpenStream(context.Context) (MuxedStream, error)

    // AcceptStream accepts a stream opened by the other side.
    AcceptStream() (MuxedStream, error)
}

MuxedConn represents a connection to a remote peer that has been extended to support stream multiplexing.

A MuxedConn allows a single net.Conn connection to carry many logically independent bidirectional streams of binary data.

Together with network.ConnSecurity, MuxedConn is a component of the transport.CapableConn interface, which represents a "raw" network connection that has been "upgraded" to support the libp2p capabilities of secure communication and stream multiplexing.

type MuxedStream Uses

type MuxedStream interface {
    io.Reader
    io.Writer

    // Close closes the stream.
    //
    // * Any buffered data for writing will be flushed.
    // * Future reads will fail.
    // * Any in-progress reads/writes will be interrupted.
    //
    // Close may be asynchronous and _does not_ guarantee receipt of the
    // data.
    io.Closer

    // CloseWrite closes the stream for writing but leaves it open for
    // reading.
    //
    // CloseWrite does not free the stream, users must still call Close or
    // Reset.
    CloseWrite() error

    // CloseRead closes the stream for writing but leaves it open for
    // reading.
    //
    // CloseRead does not free the stream, users must still call Close or
    // Reset.
    CloseRead() error

    // Reset closes both ends of the stream. Use this to tell the remote
    // side to hang up and go away.
    Reset() error

    SetDeadline(time.Time) error
    SetReadDeadline(time.Time) error
    SetWriteDeadline(time.Time) error
}

Stream is a bidirectional io pipe within a connection.

Package mux imports 5 packages (graph) and is imported by 47 packages. Updated 2020-12-22. Refresh now. Tools for package owners.