link

package
v0.40.3 Latest Latest
Warning

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

Go to latest
Published: Dec 23, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoMountedStreamContext = errors.New("no mounted stream context")

ErrNoMountedStreamContext is returned if there was no MountedStreamContext.

Functions

func WithMountedStreamContext added in v0.20.2

func WithMountedStreamContext(ctx context.Context, msc MountedStreamContext) context.Context

WithMountedStreamContext attaches a MountedStreamContext to a Context.

Types

type EstablishLinkWithPeer

type EstablishLinkWithPeer interface {
	// Directive indicates EstablishLinkWithPeer is a directive.
	directive.Directive

	// EstablishLinkSourcePeerId returns the source peer ID.
	// Can be empty to allow any.
	EstablishLinkSourcePeerId() peer.ID
	// EstablishLinkTargetPeerId returns the target peer ID.
	// Cannot be empty.
	EstablishLinkTargetPeerId() peer.ID
}

EstablishLinkWithPeer is a directive to establish a link with a peer.

Value: Link

func NewEstablishLinkWithPeer

func NewEstablishLinkWithPeer(srcPeer, destPeer peer.ID) EstablishLinkWithPeer

NewEstablishLinkWithPeer constructs a new EstablishLinkWithPeer directive.

type EstablishLinkWithPeerValue added in v0.14.1

type EstablishLinkWithPeerValue = Link

EstablishLinkWithPeerValue is the type emitted when resolving EstablishLinkWithPeer.

type HandleMountedStream

type HandleMountedStream interface {
	// Directive indicates HandleMountedStream is a directive.
	directive.Directive

	// HandleMountedStreamProtocolID returns the protocol ID we are requesting a
	// handler for. Cannot be empty.
	HandleMountedStreamProtocolID() protocol.ID
	// HandleMountedStreamLocalPeerID returns the local peer ID we are
	// requesting a handler for. Cannot be empty.
	HandleMountedStreamLocalPeerID() peer.ID
	// HandleMountedStreamRemotePeerID returns the remote peer ID we are
	// requesting a handler for. Cannot be empty.
	HandleMountedStreamRemotePeerID() peer.ID
}

HandleMountedStream is a directive to return a mounted stream handler for a protocol ID. Value is of type link.MountedStreamHandler.

func NewHandleMountedStream

func NewHandleMountedStream(
	protocolID protocol.ID,
	localPeerID, remotePeerID peer.ID,
) HandleMountedStream

NewHandleMountedStream constructs a new HandleMountedStream directive.

type HandleMountedStreamValue

type HandleMountedStreamValue = MountedStreamHandler

HandleMountedStreamValue is the value type for HandleMountedStream.

type Link interface {
	// GetUUID returns the host-unique ID.
	// This should be repeatable between re-constructions of the same link.
	GetUUID() uint64
	// GetTransportUUID returns the unique ID of the transport.
	GetTransportUUID() uint64
	// OpenStream opens a stream on the link, with the given parameters.
	OpenStream(opts stream.OpenOpts) (stream.Stream, error)
	// AcceptStream accepts a stream from the link.
	// Terminates when the link closes.
	AcceptStream() (stream.Stream, stream.OpenOpts, error)
	// GetRemotePeer returns the identity of the remote peer.
	GetRemotePeer() peer.ID
	// GetLocalPeer returns the identity of the local peer.
	GetLocalPeer() peer.ID
	// GetRemoteTransportUUID returns the reported remote transport UUID.
	// This should be negotiated in the handshake.
	GetRemoteTransportUUID() uint64
	// Close closes the link.
	// Any blocked ReadFrom or WriteTo operations will be unblocked and return errors.
	// The link should call the HandleLinkLost callback exactly once.
	// Close may be called many times.
	Close() error
}

Link represents a one-hop connection between two peers.

func EstablishLinkWithPeerEx added in v0.14.1

func EstablishLinkWithPeerEx(
	ctx context.Context,
	b bus.Bus,
	localPeerID, remotePeerID peer.ID,
	returnIfIdle bool,
) (Link, func(), error)

EstablishLinkWithPeerEx executes a EstablishLinkWithPeer directive. Returns a release function. if returnIfIdle: returns nil, nil, nil if not found (idle directive)

type MountedStream

type MountedStream interface {
	// GetStream returns the underlying stream object.
	GetStream() stream.Stream
	// GetProtocolID returns the protocol ID of the stream.
	GetProtocolID() protocol.ID
	// GetOpenOpts returns the options used to open the stream.
	GetOpenOpts() stream.OpenOpts
	// GetPeerID returns the peer ID for the other end of the stream.
	GetPeerID() peer.ID
	// GetLink returns the associated link carrying the stream.
	GetLink() Link
}

MountedStream is a stream attached to a Link. This is produced and managed by the link controller. A mounted stream is produced after the initial stream negotiation is completed.

func OpenStreamViaLinkEx

func OpenStreamViaLinkEx(
	ctx context.Context,
	b bus.Bus,
	remotePeerID peer.ID,
	protocolID protocol.ID,
	linkUUID uint64,
	transportID uint64,
	openOpts stream.OpenOpts,
) (MountedStream, error)

OpenStreamViaLinkEx executes a OpenStreamViaLink directive.

func OpenStreamWithPeerEx

func OpenStreamWithPeerEx(
	ctx context.Context,
	b bus.Bus,
	protocolID protocol.ID,
	localPeerID, remotePeerID peer.ID,
	transportID uint64,
	openOpts stream.OpenOpts,
) (MountedStream, func(), error)

OpenStreamWithPeerEx executes a OpenStreamWithPeer directive. Returns a release function for the links used for the stream.

type MountedStreamContext added in v0.20.2

type MountedStreamContext = MountedStream

MountedStreamContext is the value attached to a Context containing information about the current mounted stream.

func GetMountedStreamContext added in v0.20.2

func GetMountedStreamContext(ctx context.Context) MountedStreamContext

GetMountedStreamContext returns the MountedStreamContext from the Context or nil if unset.

func MustGetMountedStreamContext added in v0.35.1

func MustGetMountedStreamContext(ctx context.Context) (MountedStreamContext, error)

MustGetMountedStreamContext returns the MountedStreamContext from the Context or an error if unset.

type MountedStreamHandler

type MountedStreamHandler interface {
	// HandleMountedStream handles an incoming mounted stream.
	//
	// This function should return as soon as possible, and start
	// additional goroutines to manage the lifecycle of the stream.
	//
	// The context will be canceled when the Link closes.
	// The context will /not/ be canceled when ms closes.
	// Any returned error indicates the stream should be closed.
	HandleMountedStream(ctx context.Context, ms MountedStream) error
}

MountedStreamHandler handles an incoming mounted stream.

type OpenStreamViaLink interface {
	// Directive indicates OpenStreamViaLink is a directive.
	directive.Directive

	// OpenStreamViaLinkUUID returns the link UUID to select.
	// Cannot be empty.
	OpenStreamViaLinkUUID() uint64
	// OpenStreamViaLinkProtocolID returns the protocol ID to negotiate with the peer.
	// Cannot be empty.
	OpenStreamViaLinkProtocolID() protocol.ID
	// OpenStreamViaLinkOpenOpts returns the open stream options.
	// Cannot be empty.
	OpenStreamViaLinkOpenOpts() stream.OpenOpts
	// OpenStreamViaLinkTransportConstraint returns a specific transport ID we want.
	// Can be empty.
	// Used to guarantee the same link is selected.
	OpenStreamViaLinkTransportConstraint() uint64
}

OpenStreamViaLink is a directive to open a stream with a peer over an established link. Not de-duplicated, intended to be used with OneOff.

func NewOpenStreamViaLink(
	linkUUID uint64,
	protocolID protocol.ID,
	openOpts stream.OpenOpts,
	transportConstraint uint64,
) OpenStreamViaLink

NewOpenStreamViaLink constructs a new openStreamViaLink directive.

type OpenStreamViaLinkValue added in v0.10.0

type OpenStreamViaLinkValue = MountedStream

OpenStreamViaLinkValue is the value of OpenStreamViaLink.

type OpenStreamWithPeer

type OpenStreamWithPeer interface {
	// Directive indicates OpenStreamWithPeer is a directive.
	directive.Directive

	// OpenStreamWithPeerProtocolID returns the protocol ID to negotiate with the peer.
	// Cannot be empty.
	OpenStreamWPProtocolID() protocol.ID
	// OpenStreamWithPeerTargetPeerID returns the target peer ID.
	// Cannot be empty.
	OpenStreamWPTargetPeerID() peer.ID
	// OpenStreamWithPeerOpenOpts returns the open stream options.
	// Cannot be empty.
	OpenStreamWPOpenOpts() stream.OpenOpts

	// OpenStreamWithPeerSourcePeerID returns the source peer ID.
	// Can be empty.
	OpenStreamWPSourcePeerID() peer.ID
	// OpenStreamWithPeerTransportConstraint returns a specific transport ID we want.
	// Can be empty.
	OpenStreamWPTransportConstraint() uint64
}

OpenStreamWithPeer is a directive to open a stream with a peer. Not de-duplicated, intended to be used with OneOff.

func NewOpenStreamWithPeer

func NewOpenStreamWithPeer(
	protocolID protocol.ID,
	sourcePeerID, targetPeerID peer.ID,
	transportConstraint uint64,
	openOpts stream.OpenOpts,
) OpenStreamWithPeer

NewOpenStreamWithPeer constructs a new openStreamWithPeer directive.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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