Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config interface {
// Config indicates this is a controllerbus config.
config.Config
// Debuggable indicates this config is debuggable.
config.Debuggable
// GetTransportPeerId returns the node peer ID constraint.
GetTransportPeerId() string
// SetTransportPeerId sets the node peer ID field.
SetTransportPeerId(peerID string)
}
Config contains common parameters all transport configs must have.
type Controller ¶
type Controller interface {
// Controller is the controllerbus controller interface.
controller.Controller
// GetTransport returns the controlled transport.
// This may wait for the controller to be ready.
GetTransport(ctx context.Context) (Transport, error)
}
Controller is a transport controller.
type LookupTransport ¶
type LookupTransport interface {
// Directive indicates LookupTransport is a directive.
directive.Directive
// LookupTransportPeerIDConstraint returns a specific node ID we are looking for.
// Can be empty.
LookupTransportPeerIDConstraint() peer.ID
// LookupTransportIDConstraint returns a specific transport ID we are looking for.
// Can be empty.
LookupTransportIDConstraint() uint64
}
LookupTransport is a directive to lookup running transports. Value type: transport.Transport.
func NewLookupTransport ¶
func NewLookupTransport(peerID peer.ID, transportID uint64) LookupTransport
NewLookupTransport constructs a new LookupTransport directive.
type Transport ¶
type Transport interface {
// Execute executes the transport as configured, returning any fatal error.
Execute(ctx context.Context) error
// GetUUID returns a host-unique ID for this transport.
GetUUID() uint64
// GetPeerID returns the peer ID.
GetPeerID() peer.ID
// Close closes the transport, returning any errors closing.
Close() error
}
Transport is similar to a NIC, yielding links to remote peers.
type TransportDialer ¶
type TransportDialer interface {
// MatchTransportType checks if the given transport type ID matches this transport.
// If returns true, the transport controller will call DialPeer with that tptaddr.
// E.x.: "udp-quic" or "ws"
MatchTransportType(transportType string) bool
// DialPeer dials a peer given an address. The yielded link should be
// emitted to the transport handler. DialPeer should return nil if the link
// was established. DialPeer will then not be called again for the same peer
// ID and address tuple until the yielded link is lost.
// Returns fatal and error.
DialPeer(
ctx context.Context,
peerID peer.ID,
addr string,
) (fatal bool, err error)
}
TransportDialer is a transport that supports dialing string-serialized remote addresses. The Transport controller will call Dial if provided an address for the transport, and directed to connect to the peer.
type TransportHandler ¶
type TransportHandler interface {
// HandleLinkEstablished is called when a link is established.
HandleLinkEstablished(lnk link.Link)
// HandleLinkLost is called when a link is lost.
HandleLinkLost(lnk link.Link)
}
TransportHandler manages a Transport and receives event callbacks. This is typically fulfilled by the transport controller.