Documentation
¶
Index ¶
- type AfterHandlerSelectedHook
- type BeforeHandlerSelectionHook
- type DebugHook
- func (p *DebugHook) AfterHandlerSelection(ctx context.Context, info *session.Info, rw any, handler i.Outbound) (context.Context, any, error)
- func (p *DebugHook) BeforeHandlerSelection(ctx context.Context, info *session.Info, rw any) (context.Context, any, error)
- func (p *DebugHook) FlowSessionEnd(ctx context.Context, info *session.Info, err error)
- func (p *DebugHook) PacketConnSessionEnd(ctx context.Context, info *session.Info, err error)
- type Dispatcher
- func (d *Dispatcher) AddAfterHandlerSelectionHook(hook AfterHandlerSelectedHook)
- func (d *Dispatcher) AddBeforeHandlerSelectionHook(hook BeforeHandlerSelectionHook)
- func (p *Dispatcher) AddHandlerErrorObserver(observer i.HandlerErrorObserver)
- func (d *Dispatcher) AddOnFallback(fallback OnFallback)
- func (d *Dispatcher) AddSessionEndHook(hook SessionEndHook)
- func (d *Dispatcher) AddSessionStartHook(hook SessionStartHook)
- func (d *Dispatcher) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
- func (d *Dispatcher) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
- func (d *Dispatcher) Relay(ctx context.Context, info *session.Info, left, right any, outbound i.Outbound) error
- func (p *Dispatcher) RemoveHandlerErrorObserver(observer i.HandlerErrorObserver)
- type Fallback
- type GetCounters
- type IdleHook
- type NullSessionErrorLogger
- type OnFallback
- type OnHandlerErrorFunc
- type OutStats
- type OutboundHandlerStats
- type RealIpPacketConn
- type RewriteDestinationHook
- type SessionEndHook
- type SessionErrorLogger
- type SessionStartHook
- type StatsDeadlineRW
- type StatsPacketConn
- type StatsReaderWriter
- type TimeoutDeadlineRW
- type TimeoutPacketConn
- type TimeoutReaderWriter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AfterHandlerSelectedHook ¶ added in v1.0.7
type BeforeHandlerSelectionHook ¶ added in v1.0.7
type DebugHook ¶ added in v1.0.7
type DebugHook struct {
}
func (*DebugHook) AfterHandlerSelection ¶ added in v1.0.7
func (*DebugHook) BeforeHandlerSelection ¶ added in v1.0.7
func (*DebugHook) FlowSessionEnd ¶ added in v1.0.7
type Dispatcher ¶
type Dispatcher struct {
BeforeHandlerSelectionHooks []BeforeHandlerSelectionHook
Router i.Router
OnHandlerSelectedHooks []AfterHandlerSelectedHook
SessionStartHooks []SessionStartHook
SessionEndHooks []SessionEndHook
TimeoutSetting i.TimeoutSetting
OnFallbacks []OnFallback
FallbackTimeout time.Duration
OutStats *OutStats
SessionStats bool
RewriteIpv6ToDomain bool
HandlerLinkStats bool
HandlerMeter bool
Flows atomic.Int32
PacketConns atomic.Int32
HandlerErrorObservers []i.HandlerErrorObserver
// contains filtered or unexported fields
}
func (*Dispatcher) AddAfterHandlerSelectionHook ¶ added in v1.0.7
func (d *Dispatcher) AddAfterHandlerSelectionHook(hook AfterHandlerSelectedHook)
func (*Dispatcher) AddBeforeHandlerSelectionHook ¶ added in v1.0.7
func (d *Dispatcher) AddBeforeHandlerSelectionHook(hook BeforeHandlerSelectionHook)
func (*Dispatcher) AddHandlerErrorObserver ¶
func (p *Dispatcher) AddHandlerErrorObserver(observer i.HandlerErrorObserver)
func (*Dispatcher) AddOnFallback ¶ added in v1.1.0
func (d *Dispatcher) AddOnFallback(fallback OnFallback)
func (*Dispatcher) AddSessionEndHook ¶ added in v1.0.7
func (d *Dispatcher) AddSessionEndHook(hook SessionEndHook)
func (*Dispatcher) AddSessionStartHook ¶ added in v1.2.1
func (d *Dispatcher) AddSessionStartHook(hook SessionStartHook)
func (*Dispatcher) HandleFlow ¶
func (d *Dispatcher) HandleFlow(ctx context.Context, dst net.Destination, rw buf.ReaderWriter) error
func (*Dispatcher) HandlePacketConn ¶
func (d *Dispatcher) HandlePacketConn(ctx context.Context, dst net.Destination, pc udp.PacketReaderWriter) error
func (*Dispatcher) RemoveHandlerErrorObserver ¶
func (p *Dispatcher) RemoveHandlerErrorObserver(observer i.HandlerErrorObserver)
type GetCounters ¶ added in v1.1.0
type GetCounters interface {
GetCounters(ctx context.Context, info *session.Info, handler i.Outbound) (session.UpCounters, session.DownCounters)
}
type IdleHook ¶ added in v1.0.7
type IdleHook struct {
TimeoutPolicy i.TimeoutSetting
}
type NullSessionErrorLogger ¶ added in v1.0.7
type NullSessionErrorLogger struct{}
func (*NullSessionErrorLogger) LogSessionError ¶ added in v1.0.7
func (n *NullSessionErrorLogger) LogSessionError(info *session.Info, err error)
type OnFallback ¶ added in v1.1.0
type OnHandlerErrorFunc ¶
type OutStats ¶ added in v1.2.1
type OutStats struct {
sync.Mutex
Map map[string]*OutboundHandlerStats
// contains filtered or unexported fields
}
func NewOutStats ¶ added in v1.2.1
func NewOutStats() *OutStats
func (*OutStats) Get ¶ added in v1.2.1
func (o *OutStats) Get(tag string) *OutboundHandlerStats
func (*OutStats) IsHandlerActive ¶ added in v1.2.1
type OutboundHandlerStats ¶ added in v1.2.1
type OutboundHandlerStats struct {
UpCounter atomic.Uint64
DownCounter atomic.Uint64
// The time when the up/down counter is reset
Interval atomic.Value
Throughput atomic.Uint64
Ping atomic.Uint64
// The time when this handler is selected to handle
Time atomic.Value
// The time when there is response traffic from this handler
ActiveTime atomic.Value //time.Time
}
func NewHandlerStats ¶ added in v1.2.1
func NewHandlerStats(throughput uint64, ping uint64) *OutboundHandlerStats
func (*OutboundHandlerStats) AddPing ¶ added in v1.2.1
func (s *OutboundHandlerStats) AddPing(v uint64)
func (*OutboundHandlerStats) AddThroughput ¶ added in v1.2.1
func (s *OutboundHandlerStats) AddThroughput(v uint64)
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)
should be called sequentially
func (*RealIpPacketConn) WritePacket ¶
func (p *RealIpPacketConn) WritePacket(packet *udp.Packet) error
type RewriteDestinationHook ¶ added in v1.0.7
type RewriteDestinationHook struct {
Sniff bool
Sniffer *sniff.Sniffer
DestinationOverride []string
FakeDns i.FakeDnsPool
Dns i.IPResolver
}
type SessionEndHook ¶ added in v1.0.7
type SessionErrorLogger ¶ added in v1.0.7
type SessionStartHook ¶ added in v1.2.1
type StatsDeadlineRW ¶
type StatsDeadlineRW struct {
i.DeadlineRW
// contains filtered or unexported fields
}
func NewStatsDeadlineRW ¶ added in v1.0.7
func NewStatsDeadlineRW(rw i.DeadlineRW, upCounter session.UpCounter, downCounter session.DownCounter, activeChecker *atomic.Value) *StatsDeadlineRW
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 NewStatsPacketConn ¶ added in v1.0.7
func NewStatsPacketConn(prw udp.PacketReaderWriter, upCounter session.UpCounters, downCounter session.DownCounters, activeChecker *atomic.Value) *StatsPacketConn
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 NewStatsReaderWriter ¶ added in v1.0.7
func NewStatsReaderWriter(rw buf.ReaderWriter, upCounter session.UpCounter, downCounter session.DownCounter, activeChecker *atomic.Value) *StatsReaderWriter
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) ReadMultiBuffer ¶
func (w *TimeoutDeadlineRW) ReadMultiBuffer() (buf.MultiBuffer, error)
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) ReadMultiBuffer ¶
func (w *TimeoutReaderWriter) ReadMultiBuffer() (buf.MultiBuffer, error)
func (*TimeoutReaderWriter) WriteMultiBuffer ¶
func (w *TimeoutReaderWriter) WriteMultiBuffer(mb buf.MultiBuffer) error
Click to show internal directories.
Click to hide internal directories.