| 1234567891011121314151617181920212223242526272829303132333435363738394041 | 
							- package outbound
 
- import (
 
- 	"math/rand"
 
- 	v2net "github.com/v2ray/v2ray-core/common/net"
 
- 	"github.com/v2ray/v2ray-core/proxy/vmess"
 
- )
 
- type Receiver struct {
 
- 	Destination v2net.Destination
 
- 	Accounts    []vmess.User
 
- }
 
- type ReceiverManager struct {
 
- 	receivers []*Receiver
 
- }
 
- func NewReceiverManager(receivers []*Receiver) *ReceiverManager {
 
- 	return &ReceiverManager{
 
- 		receivers: receivers,
 
- 	}
 
- }
 
- func (this *ReceiverManager) PickReceiver() (v2net.Destination, vmess.User) {
 
- 	receiverLen := len(this.receivers)
 
- 	receiverIdx := 0
 
- 	if receiverLen > 1 {
 
- 		receiverIdx = rand.Intn(receiverLen)
 
- 	}
 
- 	receiver := this.receivers[receiverIdx]
 
- 	userLen := len(receiver.Accounts)
 
- 	userIdx := 0
 
- 	if userLen > 1 {
 
- 		userIdx = rand.Intn(userLen)
 
- 	}
 
- 	user := receiver.Accounts[userIdx]
 
- 	return receiver.Destination, user
 
- }
 
 
  |