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 Filter
- type HandlerErrorChangeSubject
- type HandlersBeingUsedUpdate
- type MemoryBalancer
- type RandomBanlancer
- type Selector
- func (s *Selector) Close() error
- 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 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 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 Selector ¶
type Selector struct {
util.IPv6SupportChangeNotifier
LandHandlers []*xsqlite.OutboundHandler
// 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
Database Db
OutboundManager *outbound.Manager
OnHandlerBeingUsedChange HandlersBeingUsedUpdate
LandHandlers []*xsqlite.OutboundHandler
}
type Selectors ¶
type Selectors struct {
// notify listeners when any selector's ipv6 support changed or any selector is added or removed
i.IPv6SupportChangeSubject
// 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.