transport

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: May 27, 2026 License: AGPL-3.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AnyDialerCreator = make(map[reflect.Type]DialerCreator)
View Source
var AnySecurityCreator = make(map[reflect.Type]SecurityCreator)
View Source
var AnySecurityListenerCreator = make(map[reflect.Type]SecurityListenerCreator)
View Source
var DefaultPacketListener = &dlhelper.SocketSetting{}

Functions

func GetSecurityEngine added in v1.0.7

func GetSecurityEngine(securityConfig interface{}, echResolver i.ECHResolver) (security.Engine, error)

func Listen

func Listen(addr net1.Destination, config *Config) (net.Listener, error)

Keeps accepting and use h to handle the conn.

func NewDialer

func NewDialer(protocolConfig, securityConfig interface{},
	dl i.DialerListener, echResolver i.ECHResolver) (i.Dialer, error)

func RegisterDialerCreator added in v1.0.7

func RegisterDialerCreator(name reflect.Type, creator DialerCreator)

func RegisterListenerCreator added in v1.0.7

func RegisterListenerCreator(name reflect.Type, creator ListenerCreator)

func RegisterSecurityCreator added in v1.2.4

func RegisterSecurityCreator(name reflect.Type, creator SecurityCreator)

func RegisterSecurityListenerCreator added in v1.2.4

func RegisterSecurityListenerCreator(name reflect.Type, creator SecurityListenerCreator)

Types

type BindToDefaultNICDialer

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

func NewBindToDefaultNICDialer

func NewBindToDefaultNICDialer(defaultNICMonitor i.DefaultInterfaceInfo, socketSetting *dlhelper.SocketSetting) *BindToDefaultNICDialer

func (*BindToDefaultNICDialer) Dial

func (*BindToDefaultNICDialer) ListenPacket

func (d *BindToDefaultNICDialer) ListenPacket(ctx context.Context, network, address string) (net.PacketConn, error)

type Config

type Config struct {
	Security interface{}
	Protocol interface{}
	Socket   *dlhelper.SocketSetting
	// used to lookup ech config
	DnsServer i.ECHResolver
	// dialer
	DomainStrategy domain.DomainStrategy
}

func (*Config) Listen

func (config *Config) Listen(ctx context.Context, netAddr net.Addr) (net.Listener, error)

type DialerCreator added in v1.0.7

type DialerCreator func(protocolConfig, securityConfig interface{},
	dl i.DialerListener, echResolver i.ECHResolver) (i.Dialer, error)

type DialerFactory

type DialerFactory interface {
	GetDialer(*Config) (i.Dialer, error)
	GetPacketListener(*Config) (i.PacketListener, error)
}

type DialerFactoryImp

type DialerFactoryImp struct {
	DialerFactoryOption
}

func DefaultDialerFactory

func DefaultDialerFactory() *DialerFactoryImp

func NewDialerFactoryImp

func NewDialerFactoryImp(options DialerFactoryOption) *DialerFactoryImp

func (*DialerFactoryImp) GetDialer

func (d *DialerFactoryImp) GetDialer(config *Config) (i.Dialer, error)

func (*DialerFactoryImp) GetPacketListener

func (d *DialerFactoryImp) GetPacketListener(config *Config) (i.PacketListener, error)

type DialerFactoryOption

type DialerFactoryOption struct {
	Retry                   bool
	BindToDefaultNIC        bool
	DefaultInterfaceMonitor i.DefaultInterfaceInfo
	// used to bind to default nic
	FdFunc      FdFunc
	IpResolver  i.IPResolver
	DialTimeout time.Duration
}

type FdFunc

type FdFunc func(fd uintptr) error

type HandlerDialerFactory

type HandlerDialerFactory struct {
	Handler     i.Handler
	EchResolver i.ECHResolver
}

use a handler to dial and listen

func (*HandlerDialerFactory) GetDialer

func (d *HandlerDialerFactory) GetDialer(config *Config) (i.Dialer, error)

func (*HandlerDialerFactory) GetPacketListener

func (d *HandlerDialerFactory) GetPacketListener(config *Config) (i.PacketListener, error)

type Listener

type Listener interface {
	Close() error
	Addr() net.Addr
}

type ListenerAdapter

type ListenerAdapter struct {
	Listener
	// contains filtered or unexported fields
}

func (*ListenerAdapter) Accept

func (l *ListenerAdapter) Accept() (net.Conn, error)

func (*ListenerAdapter) Close

func (l *ListenerAdapter) Close() error

type ListenerCreator added in v1.0.7

type ListenerCreator func(ctx context.Context, addr net1.Destination, protocolConfig interface{},
	dl i.Listener, handleConn func(net1.Conn)) (Listener, error)

type ListenerImpl

type ListenerImpl struct {
	Socket         *dlhelper.SocketSetting
	SecurityConfig interface{}
	// contains filtered or unexported fields
}

func (*ListenerImpl) Listen

func (l *ListenerImpl) Listen(ctx context.Context, addr net.Addr) (net.Listener, error)

type PreConnectDialer

type PreConnectDialer struct {
	i.Dialer

	PortSelector i.PortSelector
	// contains filtered or unexported fields
}

func NewPreConnectDialer

func NewPreConnectDialer(ctx context.Context, dialer i.Dialer, addr net.Address,
	portSelector i.PortSelector) *PreConnectDialer

NewPreConnectDialer creates a new PreConnectDialer with connection pooling

func (*PreConnectDialer) Dial

Dial returns a pre-established connection from the pool, or creates a new one if pool is empty

type Prefer4Dialer

type Prefer4Dialer struct {
	i.Dialer
	IpResolver i.IPResolver
}

func (*Prefer4Dialer) Dial

func (p *Prefer4Dialer) Dial(ctx context.Context, dst net1.Destination) (net.Conn, error)

type ResolveDomainDialer

type ResolveDomainDialer struct {
	i.DialerListener
	Dns i.IPResolver
	// if nil, use lookupIP to lookup domain
	// when not-nil, Dialer tyically use default nic to dial.
	DefaultInterfaceInfo i.DefaultInterfaceInfo
	Strategy             domain.DomainStrategy
}

This dialer will resolve domain to ip address before dial. If the default interface does not support ipv6, it will only lookup ipv4.

func (*ResolveDomainDialer) Dial

beaware that when DefaultInterfaceInfo is nil, LookupIP might return ipv6 address while the default nic does not support ipv6.

type RetryDialer

type RetryDialer struct {
	i.Dialer
}

func (*RetryDialer) Dial

func (d *RetryDialer) Dial(ctx context.Context, target net1.Destination) (net.Conn, error)

type SecurityCreator added in v1.2.4

type SecurityCreator func(securityConfig interface{}) (security.Engine, error)

type SecurityListenerCreator added in v1.2.4

type SecurityListenerCreator func(listener net.Listener, securityConfig interface{}) (net.Listener, error)

type UdpDialer

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

func (*UdpDialer) Dial

func (d *UdpDialer) Dial(ctx context.Context, dest net1.Destination) (net.Conn, error)

Directories

Path Synopsis
tls
utp
protocols
kcp
Package kcp - A Fast and Reliable ARQ Protocol
Package kcp - A Fast and Reliable ARQ Protocol
tcp
udp
websocket
Package websocket implements Websocket transport
Package websocket implements Websocket transport
tls

Jump to

Keyboard shortcuts

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