Documentation
¶
Index ¶
- func NewDbFilter(db Db, filterConfig *configs.SelectorConfig_Filter, ...) *dbFilter
- func NewOmFilter(filterConfig *configs.SelectorConfig_Filter, om *outbound.Manager) *omFilter
- func TestHandler6(ctx context.Context, s Tester, item outHandler)
- func TestHandlerPing(ctx context.Context, s Tester, item outHandler)
- func TestHandlerSpeed(ctx context.Context, s Tester, item outHandler)
- func TestHandlerUsable(ctx context.Context, s Tester, item outHandler)
- type Balancer
- type CreateHandlerFunc
- type Db
- type FastRecoveryChangeNotifier
- type FastRecoveryChangeObserver
- type Filter
- type FilterUpdate
- type HandlerErrorChangeSubject
- type HandlersBeingUsedUpdate
- type MemoryBalancer
- type OnFastRecoveryChangedFunc
- type OnSelectedHandlersChangedFunc
- type RandomBanlancer
- type SelectedHandlersChangeNotifier
- func (n *SelectedHandlersChangeNotifier) NotifySelectedHandlersChanged(tag string, handlers []string)
- func (n *SelectedHandlersChangeNotifier) RegisterSelectedHandlersChangeObserver(observer SelectedHandlersChangeObserver)
- func (n *SelectedHandlersChangeNotifier) UnregisterSelectedHandlersChangeObserver(observer SelectedHandlersChangeObserver)
- type SelectedHandlersChangeObserver
- type Selector
- func (s *Selector) Close() error
- func (s *Selector) GetFilter() Filter
- func (s *Selector) GetHandler(info *session.Info) i.Outbound
- func (s *Selector) Load()
- func (s *Selector) OnHandlerChanged()
- func (s *Selector) OnHandlerError(tag string, err error)
- func (s *Selector) OnHandlerSpeedChanged(tag string, speed int32)
- func (s *Selector) Start() error
- func (s *Selector) Tag() string
- func (s *Selector) TestAllUnusable() error
- func (s *Selector) TestPingAll() error
- func (s *Selector) TestSpeedAll() error
- func (s *Selector) UpdateBalancer(balancer Balancer)
- func (s *Selector) UpdateFilter(filter Filter)
- type SelectorConfig
- type Selectors
- func (s *Selectors) AddSelector(selector *Selector)
- func (s *Selectors) Close() error
- func (s *Selectors) GetAllSelectors() []*Selector
- func (s *Selectors) GetSelector(tag string) *Selector
- func (s *Selectors) OnHandlerChanged()
- func (s *Selectors) OnHandlerSpeedChanged(tag string, speed int32)
- func (s *Selectors) OnIPv6SupportChanged()
- func (s *Selectors) RemoveAllSelectors()
- func (s *Selectors) RemoveSelector(tag string)
- func (s *Selectors) Start() error
- type Tester
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewDbFilter ¶
func NewDbFilter(db Db, filterConfig *configs.SelectorConfig_Filter, landHandlers []*xsqlite.OutboundHandler, createHandler CreateHandlerFunc) *dbFilter
func NewOmFilter ¶
func NewOmFilter(filterConfig *configs.SelectorConfig_Filter, om *outbound.Manager) *omFilter
func TestHandler6 ¶
func TestHandlerPing ¶
func TestHandlerSpeed ¶
func TestHandlerUsable ¶
used to test unusable handlers
Types ¶
type CreateHandlerFunc ¶
type CreateHandlerFunc func(h *configs.HandlerConfig, landHandlerIds []*xsqlite.OutboundHandler) (i.Outbound, error)
type Db ¶
type Db interface {
GetAllHandlers() ([]*xsqlite.OutboundHandler, error)
GetHandlersByGroup(group string) ([]*xsqlite.OutboundHandler, error)
GetBatchedHandlers(batchSize int, offset int) ([]*xsqlite.OutboundHandler, error)
GetHandler(id int) *xsqlite.OutboundHandler
}
type FastRecoveryChangeNotifier ¶ added in v1.0.7
type FastRecoveryChangeNotifier struct {
// contains filtered or unexported fields
}
func (*FastRecoveryChangeNotifier) Notify ¶ added in v1.0.7
func (n *FastRecoveryChangeNotifier) Notify(isRecovery bool)
func (*FastRecoveryChangeNotifier) RegisterFastRevoceryObserver ¶ added in v1.0.7
func (n *FastRecoveryChangeNotifier) RegisterFastRevoceryObserver(observer FastRecoveryChangeObserver)
func (*FastRecoveryChangeNotifier) UnregisterFastRevoceryObserver ¶ added in v1.0.7
func (n *FastRecoveryChangeNotifier) UnregisterFastRevoceryObserver(observer FastRecoveryChangeObserver)
type FastRecoveryChangeObserver ¶ added in v1.0.7
type FastRecoveryChangeObserver interface {
OnFastRecoveryChanged(isRecovery bool)
}
type FilterUpdate ¶ added in v1.0.7
type FilterUpdate interface {
UpdateFilterConfig(filterConfig *configs.SelectorConfig_Filter)
}
type HandlerErrorChangeSubject ¶
type HandlerErrorChangeSubject interface {
AddHandlerErrorObserver(observer i.HandlerErrorObserver)
RemoveHandlerErrorObserver(observer i.HandlerErrorObserver)
}
type HandlersBeingUsedUpdate ¶
type HandlersBeingUsedUpdate func([]string)
type MemoryBalancer ¶
type MemoryBalancer struct {
// contains filtered or unexported fields
}
func NewMemoryBalancer ¶
func NewMemoryBalancer() *MemoryBalancer
func (*MemoryBalancer) GetHandler ¶
func (b *MemoryBalancer) GetHandler(info *session.Info) i.Outbound
func (*MemoryBalancer) Support6 ¶
func (b *MemoryBalancer) Support6() bool
func (*MemoryBalancer) UpdateHandlers ¶
func (b *MemoryBalancer) UpdateHandlers(handlers []i.HandlerWith6Info)
type OnFastRecoveryChangedFunc ¶ added in v1.0.7
type OnFastRecoveryChangedFunc func()
func (OnFastRecoveryChangedFunc) OnFastRecoveryChanged ¶ added in v1.0.7
func (f OnFastRecoveryChangedFunc) OnFastRecoveryChanged()
type OnSelectedHandlersChangedFunc ¶ added in v1.0.7
type OnSelectedHandlersChangedFunc func()
func (OnSelectedHandlersChangedFunc) OnSelectedHandlersChanged ¶ added in v1.0.7
func (f OnSelectedHandlersChangedFunc) OnSelectedHandlersChanged()
type RandomBanlancer ¶
type RandomBanlancer struct {
// contains filtered or unexported fields
}
func NewRandomBanlancer ¶
func NewRandomBanlancer() *RandomBanlancer
func (*RandomBanlancer) GetHandler ¶
func (b *RandomBanlancer) GetHandler(info *session.Info) i.Outbound
func (*RandomBanlancer) Support6 ¶
func (b *RandomBanlancer) Support6() bool
func (*RandomBanlancer) UpdateHandlers ¶
func (b *RandomBanlancer) UpdateHandlers(handlers []i.HandlerWith6Info)
type SelectedHandlersChangeNotifier ¶ added in v1.0.7
type SelectedHandlersChangeNotifier struct {
// contains filtered or unexported fields
}
func (*SelectedHandlersChangeNotifier) NotifySelectedHandlersChanged ¶ added in v1.0.7
func (n *SelectedHandlersChangeNotifier) NotifySelectedHandlersChanged(tag string, handlers []string)
func (*SelectedHandlersChangeNotifier) RegisterSelectedHandlersChangeObserver ¶ added in v1.0.7
func (n *SelectedHandlersChangeNotifier) RegisterSelectedHandlersChangeObserver(observer SelectedHandlersChangeObserver)
func (*SelectedHandlersChangeNotifier) UnregisterSelectedHandlersChangeObserver ¶ added in v1.0.7
func (n *SelectedHandlersChangeNotifier) UnregisterSelectedHandlersChangeObserver(observer SelectedHandlersChangeObserver)
type SelectedHandlersChangeObserver ¶ added in v1.0.7
type Selector ¶
type Selector struct {
FastRecoveryChangeNotifier
util.IPv6SupportChangeNotifier
// contains filtered or unexported fields
}
func NewSelector ¶
func NewSelector(config SelectorConfig) *Selector
func (*Selector) OnHandlerChanged ¶
func (s *Selector) OnHandlerChanged()
func (*Selector) OnHandlerError ¶
func (*Selector) OnHandlerSpeedChanged ¶
func (*Selector) TestAllUnusable ¶
func (*Selector) TestPingAll ¶
func (*Selector) TestSpeedAll ¶
func (*Selector) UpdateBalancer ¶
func (*Selector) UpdateFilter ¶
type SelectorConfig ¶
type SelectorConfig struct {
*configs.SelectorConfig
CreateHandler CreateHandlerFunc
HandlerErrorChangeSubject HandlerErrorChangeSubject
Tester Tester
Filter Filter
OnHandlerBeingUsedChange HandlersBeingUsedUpdate
}
type Selectors ¶
type Selectors struct {
// notify listeners when any selector's ipv6 support changed or any selector is added or removed
i.IPv6SupportChangeSubject
SelectedHandlersChangeNotifier
// contains filtered or unexported fields
}
func NewSelectors ¶
func NewSelectors() *Selectors
func (*Selectors) AddSelector ¶
func (*Selectors) GetAllSelectors ¶
func (*Selectors) GetSelector ¶
func (*Selectors) OnHandlerChanged ¶
func (s *Selectors) OnHandlerChanged()
func (*Selectors) OnHandlerSpeedChanged ¶
func (*Selectors) OnIPv6SupportChanged ¶
func (s *Selectors) OnIPv6SupportChanged()
func (*Selectors) RemoveAllSelectors ¶
func (s *Selectors) RemoveAllSelectors()
func (*Selectors) RemoveSelector ¶
Click to show internal directories.
Click to hide internal directories.