mirror of
https://github.com/v2fly/v2ray-core.git
synced 2025-01-04 16:37:12 -05:00
2523d77919
(rebased from ebbf31f07e
)
52 lines
1.8 KiB
Go
52 lines
1.8 KiB
Go
package routing
|
|
|
|
import "time"
|
|
|
|
// HealthChecker is the interface for health checkers
|
|
type HealthChecker interface {
|
|
// StartScheduler starts the check scheduler
|
|
StartScheduler(selector func() ([]string, error))
|
|
// StopScheduler stops the check scheduler
|
|
StopScheduler()
|
|
// Check start the health checking for given tags.
|
|
Check(tags []string) error
|
|
}
|
|
|
|
// OutboundInfo holds information of an outbound
|
|
type OutboundInfo struct {
|
|
Tag string // Tag of the outbound
|
|
Values []string // Information of the outbound, which can be different between strategies, like health ping RTT
|
|
}
|
|
|
|
// StrategyInfo holds strategy running information, like selected handlers and others
|
|
type StrategyInfo struct {
|
|
Settings []string // Strategy settings
|
|
ValueTitles []string // Value titles of OutboundInfo.Values
|
|
Selects []*OutboundInfo // Selects of the strategy
|
|
Others []*OutboundInfo // Other outbounds
|
|
}
|
|
|
|
// BalancingOverrideInfo holds balancing override information
|
|
type BalancingOverrideInfo struct {
|
|
Until time.Time
|
|
Selects []string
|
|
}
|
|
|
|
// BalancerInfo holds information of a balancer
|
|
type BalancerInfo struct {
|
|
Tag string // Tag of the balancer
|
|
Override *BalancingOverrideInfo
|
|
Strategy *StrategyInfo // Strategy and its running information
|
|
}
|
|
|
|
// RouterChecker represents a router that is able to perform checks for its balancers, and get statistics.
|
|
type RouterChecker interface {
|
|
// CheckHanlders performs a health check for specified outbound hanlders.
|
|
CheckHanlders(tags []string) error
|
|
// CheckBalancers performs health checks for specified balancers,
|
|
// if not specified, check them all.
|
|
CheckBalancers(tags []string) error
|
|
// GetBalancersInfo get health info of specific balancer, if balancer not specified, get all
|
|
GetBalancersInfo(tags []string) ([]*BalancerInfo, error)
|
|
}
|