chain

package
v0.0.0-...-26ed3c2 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2023 License: MIT Imports: 17 Imported by: 21

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEmptyRoute = errors.New("empty route")
)

Functions

func Resolve

func Resolve(ctx context.Context, network, addr string, r resolver.Resolver, hosts hosts.HostMapper, log logger.Logger) (string, error)

Types

type BindOption

type BindOption func(opts *BindOptions)

func BacklogBindOption

func BacklogBindOption(backlog int) BindOption

func LoggerBindOption

func LoggerBindOption(logger logger.Logger) BindOption

func MuxBindOption

func MuxBindOption(mux bool) BindOption

func UDPConnTTLBindOption

func UDPConnTTLBindOption(ttl time.Duration) BindOption

func UDPDataBufferSizeBindOption

func UDPDataBufferSizeBindOption(size int) BindOption

func UDPDataQueueSizeBindOption

func UDPDataQueueSizeBindOption(size int) BindOption

type BindOptions

type BindOptions struct {
	Mux               bool
	Backlog           int
	UDPDataQueueSize  int
	UDPDataBufferSize int
	UDPConnTTL        time.Duration
	Logger            logger.Logger
}

type Chainer

type Chainer interface {
	Route(ctx context.Context, network, address string) Route
}

type DialOption

type DialOption func(opts *DialOptions)

func InterfaceDialOption

func InterfaceDialOption(ifName string) DialOption

func LoggerDialOption

func LoggerDialOption(logger logger.Logger) DialOption

func SockOptsDialOption

func SockOptsDialOption(so *SockOpts) DialOption

func TimeoutDialOption

func TimeoutDialOption(d time.Duration) DialOption

type DialOptions

type DialOptions struct {
	Timeout   time.Duration
	Interface string
	SockOpts  *SockOpts
	Logger    logger.Logger
}

type HTTPNodeSettings

type HTTPNodeSettings struct {
	Host   string
	Header map[string]string
}

type Hop

type Hop interface {
	Nodes() []*Node
	Select(ctx context.Context, opts ...SelectOption) *Node
}

type Node

type Node struct {
	Name string
	Addr string
	// contains filtered or unexported fields
}

func NewNode

func NewNode(name string, addr string, opts ...NodeOption) *Node

func (*Node) Copy

func (node *Node) Copy() *Node

func (*Node) Marker

func (node *Node) Marker() selector.Marker

Marker implements selector.Markable interface.

func (*Node) Metadata

func (node *Node) Metadata() metadata.Metadata

Metadata implements metadadta.Metadatable interface.

func (*Node) Options

func (node *Node) Options() *NodeOptions

type NodeOption

type NodeOption func(*NodeOptions)

func AutherNodeOption

func AutherNodeOption(auther auth.Authenticator) NodeOption

func HTTPNodeOption

func HTTPNodeOption(httpSettings *HTTPNodeSettings) NodeOption

func HostMapperNodeOption

func HostMapperNodeOption(m hosts.HostMapper) NodeOption

func HostNodeOption

func HostNodeOption(host string) NodeOption

func MetadataNodeOption

func MetadataNodeOption(md metadata.Metadata) NodeOption

func ProtocolNodeOption

func ProtocolNodeOption(protocol string) NodeOption

func ResoloverNodeOption

func ResoloverNodeOption(resolver resolver.Resolver) NodeOption

func TLSNodeOption

func TLSNodeOption(tlsSettings *TLSNodeSettings) NodeOption

func TransportNodeOption

func TransportNodeOption(tr *Transport) NodeOption

type NodeOptions

type NodeOptions struct {
	Transport  *Transport
	Resolver   resolver.Resolver
	HostMapper hosts.HostMapper
	Metadata   metadata.Metadata
	Host       string
	Protocol   string
	HTTP       *HTTPNodeSettings
	TLS        *TLSNodeSettings
	Auther     auth.Authenticator
}

type Route

type Route interface {
	Dial(ctx context.Context, network, address string, opts ...DialOption) (net.Conn, error)
	Bind(ctx context.Context, network, address string, opts ...BindOption) (net.Listener, error)
	Nodes() []*Node
}
var (
	DefaultRoute Route = &route{}
)

type Router

type Router struct {
	// contains filtered or unexported fields
}

func NewRouter

func NewRouter(opts ...RouterOption) *Router

func (*Router) Bind

func (r *Router) Bind(ctx context.Context, network, address string, opts ...BindOption) (ln net.Listener, err error)

func (*Router) Dial

func (r *Router) Dial(ctx context.Context, network, address string) (conn net.Conn, err error)

func (*Router) Options

func (r *Router) Options() *RouterOptions

type RouterOption

type RouterOption func(*RouterOptions)

func ChainRouterOption

func ChainRouterOption(chain Chainer) RouterOption

func HostMapperRouterOption

func HostMapperRouterOption(m hosts.HostMapper) RouterOption

func InterfaceRouterOption

func InterfaceRouterOption(ifceName string) RouterOption

func LoggerRouterOption

func LoggerRouterOption(logger logger.Logger) RouterOption

func RecordersRouterOption

func RecordersRouterOption(recorders ...recorder.RecorderObject) RouterOption

func ResolverRouterOption

func ResolverRouterOption(resolver resolver.Resolver) RouterOption

func RetriesRouterOption

func RetriesRouterOption(retries int) RouterOption

func SockOptsRouterOption

func SockOptsRouterOption(so *SockOpts) RouterOption

func TimeoutRouterOption

func TimeoutRouterOption(timeout time.Duration) RouterOption

type RouterOptions

type RouterOptions struct {
	Retries    int
	Timeout    time.Duration
	IfceName   string
	SockOpts   *SockOpts
	Chain      Chainer
	Resolver   resolver.Resolver
	HostMapper hosts.HostMapper
	Recorders  []recorder.RecorderObject
	Logger     logger.Logger
}

type SelectOption

type SelectOption func(*SelectOptions)

func AddrSelectOption

func AddrSelectOption(addr string) SelectOption

func HostSelectOption

func HostSelectOption(host string) SelectOption

func ProtocolSelectOption

func ProtocolSelectOption(protocol string) SelectOption

type SelectOptions

type SelectOptions struct {
	Addr     string
	Host     string
	Protocol string
}

type SockOpts

type SockOpts struct {
	Mark int
}

type TLSNodeSettings

type TLSNodeSettings struct {
	ServerName string
	Secure     bool
}

type Transport

type Transport struct {
	// contains filtered or unexported fields
}

func NewTransport

func NewTransport(d dialer.Dialer, c connector.Connector, opts ...TransportOption) *Transport

func (*Transport) Bind

func (tr *Transport) Bind(ctx context.Context, conn net.Conn, network, address string, opts ...connector.BindOption) (net.Listener, error)

func (*Transport) Connect

func (tr *Transport) Connect(ctx context.Context, conn net.Conn, network, address string) (net.Conn, error)

func (*Transport) Copy

func (tr *Transport) Copy() *Transport

func (*Transport) Dial

func (tr *Transport) Dial(ctx context.Context, addr string) (net.Conn, error)

func (*Transport) Handshake

func (tr *Transport) Handshake(ctx context.Context, conn net.Conn) (net.Conn, error)

func (*Transport) Multiplex

func (tr *Transport) Multiplex() bool

func (*Transport) Options

func (tr *Transport) Options() *TransportOptions

type TransportOption

type TransportOption func(*TransportOptions)

func AddrTransportOption

func AddrTransportOption(addr string) TransportOption

func InterfaceTransportOption

func InterfaceTransportOption(ifceName string) TransportOption

func RouteTransportOption

func RouteTransportOption(route Route) TransportOption

func SockOptsTransportOption

func SockOptsTransportOption(so *SockOpts) TransportOption

func TimeoutTransportOption

func TimeoutTransportOption(timeout time.Duration) TransportOption

type TransportOptions

type TransportOptions struct {
	Addr     string
	IfceName string
	SockOpts *SockOpts
	Route    Route
	Timeout  time.Duration
}

Jump to

Keyboard shortcuts

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