Documentation
¶
Overview ¶
Package tcp provides TCP based transports.
Index ¶
- func NewBootstrapTransport(opts BootstrapTransportOptions) transport.BootstrapTransport
- func NewJoinRoundTripper(opts RoundTripOptions) transport.JoinRoundTripper
- func NewRaftTransport(leaderDialer transport.LeaderDialer, opts RaftTransportOptions) (transport.RaftTransport, error)
- func NewRoundTripper[REQ, RESP any](opts RoundTripOptions, method string) transport.RoundTripper[REQ, RESP]
- func NewSignalTransport(opts WebRTCSignalOptions) transport.WebRTCSignalTransport
- type BootstrapPeer
- type BootstrapTransportOptions
- type RaftTransport
- type RaftTransportOptions
- type RoundTripOptions
- type WebRTCSignalOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewBootstrapTransport ¶
func NewBootstrapTransport(opts BootstrapTransportOptions) transport.BootstrapTransport
NewBootstrapTransport creates a new TCP transport listening on the given address. It uses a temporary in-memory raft cluster to perform leader election and then disposes of it.
func NewJoinRoundTripper ¶
func NewJoinRoundTripper(opts RoundTripOptions) transport.JoinRoundTripper
NewJoinRoundTripper creates a new gRPC round tripper for issuing a Join Request.
func NewRaftTransport ¶
func NewRaftTransport(leaderDialer transport.LeaderDialer, opts RaftTransportOptions) (transport.RaftTransport, error)
NewRaftTransport creates a new TCP transport listening on the given address.
func NewRoundTripper ¶
func NewRoundTripper[REQ, RESP any](opts RoundTripOptions, method string) transport.RoundTripper[REQ, RESP]
NewRoundTripper creates a new gRPC round tripper for the given method.
func NewSignalTransport ¶
func NewSignalTransport(opts WebRTCSignalOptions) transport.WebRTCSignalTransport
NewExternalSignalTransport returns a new WebRTC signaling transport that attempts to negotiate a WebRTC connection using the Webmesh WebRTC signaling server. This is typically used by clients trying to create a proxy connection to a server.
Types ¶
type BootstrapPeer ¶
type BootstrapPeer struct {
// NodeID is the peer id.
NodeID string
// AdvertiseAddr is the peer advertise address for leader election.
AdvertiseAddr string
// DialAddr is the peer dial address for after leader election.
DialAddr string
}
BootstrapPeer is a TCP bootstrap peer.
type BootstrapTransportOptions ¶
type BootstrapTransportOptions struct {
// NodeID is the node id of the current node.
NodeID string
// Addr is the address to listen on.
Addr string
// Peers is a map of peer ids to addresses to dial.
Peers map[string]BootstrapPeer
// Advertise is the address to advertise.
Advertise string
// MaxPool is the maximum number of connections to pool.
MaxPool int
// Timeout is the timeout for dialing a connection.
Timeout time.Duration
// ElectionTimeout is the election timeout.
ElectionTimeout time.Duration
// Credentials are the credentials to use when dialing peers.
Credentials []grpc.DialOption
}
BootstrapTransportOptions are options for the TCP transport.
type RaftTransport ¶
type RaftTransport struct {
*raft.NetworkTransport
transport.LeaderDialer
// contains filtered or unexported fields
}
RaftTransport is a transport that uses raw TCP.
func (*RaftTransport) AddrPort ¶
func (t *RaftTransport) AddrPort() netip.AddrPort
type RaftTransportOptions ¶
type RaftTransportOptions struct {
// Addr is the address to listen on.
Addr string
// MaxPool is the maximum number of connections to pool.
MaxPool int
// Timeout is the timeout for dialing a connection.
Timeout time.Duration
}
RaftTransportOptions are options for the TCP transport.
type RoundTripOptions ¶
type RoundTripOptions struct {
// Addrs is a list of addresses to try to join. The list will be iterated on
// until a successful join occurs.
Addrs []string
// Credentials are the gRPC DialOptions to use for the gRPC connection.
Credentials []grpc.DialOption
// AddressTimeout is the timeout for dialing each address. If not set
// any timeout on the context will be used.
AddressTimeout time.Duration
}
RoundTripOptions are options for a gRPC round tripper.
type WebRTCSignalOptions ¶
type WebRTCSignalOptions struct {
// Resolver is a resolver for looking up nodes with the ICE negotiation feature
Resolver transport.FeatureResolver
// Credentials are credentials to use for the gRPC connection.
Credentials []grpc.DialOption
// NodeID is the id of the remote node to signal to.
NodeID string
// TargetProto is the target protocol to request from the remote node.
TargetProto string
// TargetAddr is the target address to request from the remote node.
TargetAddr netip.AddrPort
}
WebRTCSignalOptions are options for configuring the WebRTC transport.