Documentation
¶
Index ¶
- func Relay(ctx context.Context, info *session.Info, left, right any) error
- type Dispatcher
- func (p *Dispatcher) AddHandlerErrorObserver(observer i.HandlerErrorObserver)
- func (p *Dispatcher) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
- func (p *Dispatcher) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
- func (p *Dispatcher) RemoveHandlerErrorObserver(observer i.HandlerErrorObserver)
- type LinkStats
- type LinkStatsPacketConn
- type OnHandlerErrorFunc
- type RealIpPacketConn
- type StatsDeadlineRW
- type StatsPacketConn
- type StatsReaderWriter
- type TimeoutDeadlineRW
- func (w *TimeoutDeadlineRW) CloseWrite() error
- func (w *TimeoutDeadlineRW) OkayToUnwrapReader() int
- func (w *TimeoutDeadlineRW) OkayToUnwrapWriter() int
- func (w *TimeoutDeadlineRW) ReadMultiBuffer() (buf.MultiBuffer, error)
- func (w *TimeoutDeadlineRW) UnwrapReader() any
- func (w *TimeoutDeadlineRW) UnwrapWriter() any
- func (w *TimeoutDeadlineRW) WriteMultiBuffer(mb buf.MultiBuffer) error
- type TimeoutPacketConn
- type TimeoutReaderWriter
- func (w *TimeoutReaderWriter) CloseWrite() error
- func (w *TimeoutReaderWriter) OkayToUnwrapReader() int
- func (w *TimeoutReaderWriter) OkayToUnwrapWriter() int
- func (w *TimeoutReaderWriter) ReadMultiBuffer() (buf.MultiBuffer, error)
- func (w *TimeoutReaderWriter) UnwrapReader() any
- func (w *TimeoutReaderWriter) UnwrapWriter() any
- func (w *TimeoutReaderWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type Dispatcher ¶
type Dispatcher struct {
// when direct failed, fallback to proxy. use proxy selector first, if not found, use any selector or node in outbound.manager
FallbackToProxy bool
// when fallback to domain for connections go proxy and use ip targets
FallbackToDomain bool
// Fallback to ipv4
Ipv6FallbackToDomain bool
Om i.OutboundManager
Sm *selector.Selectors
// rewrite destination
Sniff bool
Sniffer *sniff.Sniffer
DestinationOverride []string
FakeDns i.FakeDnsPool
Dns i.IPResolver
TimeoutPolicy i.TimeoutSetting
// stats
StatsPolicy i.StatsSetting
Um *user.Manager
LinkStats sync.Map //key is prefix string, value is *LinkStats
InboundStats *monitor.InboundStats //key is inbound tag, value is *InboundStats
OutStats *outbound.OutStats
UserLogger *userlogger.UserLogger
Router i.Router //Router
HandlerErrorObservers []i.HandlerErrorObserver
Flows atomic.Int32
PacketConns atomic.Int32
// contains filtered or unexported fields
}
TODO: improve error handling TODO: a udp session should only be closed when idle
func New ¶
func New() *Dispatcher
func (*Dispatcher) AddHandlerErrorObserver ¶
func (p *Dispatcher) AddHandlerErrorObserver(observer i.HandlerErrorObserver)
func (*Dispatcher) HandleFlow ¶
func (p *Dispatcher) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
func (*Dispatcher) HandlePacketConn ¶
func (p *Dispatcher) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
func (*Dispatcher) RemoveHandlerErrorObserver ¶
func (p *Dispatcher) RemoveHandlerErrorObserver(observer i.HandlerErrorObserver)
type LinkStats ¶
func (*LinkStats) AddThroughput ¶
type LinkStatsPacketConn ¶
type LinkStatsPacketConn struct {
udp.PacketReaderWriter
// contains filtered or unexported fields
}
func (*LinkStatsPacketConn) WritePacket ¶
func (w *LinkStatsPacketConn) WritePacket(packet *udp.Packet) error
downlink, right to left
type OnHandlerErrorFunc ¶
type RealIpPacketConn ¶
type RealIpPacketConn struct {
udp.PacketReaderWriter
// contains filtered or unexported fields
}
change fake ip to real ip
func (*RealIpPacketConn) ReadPacket ¶
func (p *RealIpPacketConn) ReadPacket() (*udp.Packet, error)
assume to be called sequentially
func (*RealIpPacketConn) WritePacket ¶
func (p *RealIpPacketConn) WritePacket(packet *udp.Packet) error
type StatsDeadlineRW ¶
type StatsDeadlineRW struct {
i.DeadlineRW
// contains filtered or unexported fields
}
func (*StatsDeadlineRW) ReadMultiBuffer ¶
func (w *StatsDeadlineRW) ReadMultiBuffer() (buf.MultiBuffer, error)
func (*StatsDeadlineRW) WriteMultiBuffer ¶
func (w *StatsDeadlineRW) WriteMultiBuffer(mb buf.MultiBuffer) error
type StatsPacketConn ¶
type StatsPacketConn struct {
udp.PacketReaderWriter
// contains filtered or unexported fields
}
func (*StatsPacketConn) ReadPacket ¶
func (p *StatsPacketConn) ReadPacket() (*udp.Packet, error)
func (*StatsPacketConn) WritePacket ¶
func (p *StatsPacketConn) WritePacket(packet *udp.Packet) error
type StatsReaderWriter ¶
type StatsReaderWriter struct {
buf.ReaderWriter
// contains filtered or unexported fields
}
func (*StatsReaderWriter) ReadMultiBuffer ¶
func (w *StatsReaderWriter) ReadMultiBuffer() (buf.MultiBuffer, error)
func (*StatsReaderWriter) WriteMultiBuffer ¶
func (w *StatsReaderWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
type TimeoutDeadlineRW ¶
type TimeoutDeadlineRW struct {
i.DeadlineRW
// contains filtered or unexported fields
}
func (*TimeoutDeadlineRW) CloseWrite ¶
func (w *TimeoutDeadlineRW) CloseWrite() error
func (*TimeoutDeadlineRW) OkayToUnwrapReader ¶
func (w *TimeoutDeadlineRW) OkayToUnwrapReader() int
func (*TimeoutDeadlineRW) OkayToUnwrapWriter ¶
func (w *TimeoutDeadlineRW) OkayToUnwrapWriter() int
func (*TimeoutDeadlineRW) ReadMultiBuffer ¶
func (w *TimeoutDeadlineRW) ReadMultiBuffer() (buf.MultiBuffer, error)
func (*TimeoutDeadlineRW) UnwrapReader ¶
func (w *TimeoutDeadlineRW) UnwrapReader() any
func (*TimeoutDeadlineRW) UnwrapWriter ¶
func (w *TimeoutDeadlineRW) UnwrapWriter() any
func (*TimeoutDeadlineRW) WriteMultiBuffer ¶
func (w *TimeoutDeadlineRW) WriteMultiBuffer(mb buf.MultiBuffer) error
type TimeoutPacketConn ¶
type TimeoutPacketConn struct {
udp.PacketReaderWriter
// contains filtered or unexported fields
}
func (*TimeoutPacketConn) ReadPacket ¶
func (p *TimeoutPacketConn) ReadPacket() (*udp.Packet, error)
func (*TimeoutPacketConn) WritePacket ¶
func (p *TimeoutPacketConn) WritePacket(packet *udp.Packet) error
type TimeoutReaderWriter ¶
type TimeoutReaderWriter struct {
buf.ReaderWriter
// contains filtered or unexported fields
}
func (*TimeoutReaderWriter) CloseWrite ¶
func (w *TimeoutReaderWriter) CloseWrite() error
func (*TimeoutReaderWriter) OkayToUnwrapReader ¶
func (w *TimeoutReaderWriter) OkayToUnwrapReader() int
func (*TimeoutReaderWriter) OkayToUnwrapWriter ¶
func (w *TimeoutReaderWriter) OkayToUnwrapWriter() int
func (*TimeoutReaderWriter) ReadMultiBuffer ¶
func (w *TimeoutReaderWriter) ReadMultiBuffer() (buf.MultiBuffer, error)
func (*TimeoutReaderWriter) UnwrapReader ¶
func (w *TimeoutReaderWriter) UnwrapReader() any
func (*TimeoutReaderWriter) UnwrapWriter ¶
func (w *TimeoutReaderWriter) UnwrapWriter() any
func (*TimeoutReaderWriter) WriteMultiBuffer ¶
func (w *TimeoutReaderWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
Click to show internal directories.
Click to hide internal directories.