Hunter0x7c7
2022-08-11 a82f9cb69f63aaeba40c024960deda7d75b9fece
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package router
 
import (
    "github.com/v2fly/v2ray-core/v5/common"
    "github.com/v2fly/v2ray-core/v5/common/dice"
)
 
// RandomStrategy represents a random balancing strategy
type RandomStrategy struct{}
 
func (s *RandomStrategy) GetPrincipleTarget(strings []string) []string {
    return strings
}
 
func (s *RandomStrategy) PickOutbound(candidates []string) string {
    count := len(candidates)
    if count == 0 {
        // goes to fallbackTag
        return ""
    }
    return candidates[dice.Roll(count)]
}
 
func init() {
    common.Must(common.RegisterConfig((*StrategyRandomConfig)(nil), nil))
}