Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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.
func NewEstablishLinkWithPeer ¶
func NewEstablishLinkWithPeer(srcPeer, destPeer peer.ID) EstablishLinkWithPeer
NewEstablishLinkWithPeer constructs a new EstablishLinkWithPeer directive.
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 ¶
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.
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 MountedStreamHandler ¶
type MountedStreamHandler interface { // HandleMountedStream handles an incoming mounted stream. // Any returned error indicates the stream should be closed. // This function should return as soon as possible, and start // additional goroutines to manage the lifecycle of the stream. // Typically EstablishLink is asserted in HandleMountedStream. HandleMountedStream(context.Context, MountedStream) error }
MountedStreamHandler handles an incoming mounted stream.
type OpenStreamViaLink ¶
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 ¶
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.