mirror of
https://github.com/livekit/livekit.git
synced 2026-04-14 17:25:53 +00:00
* move callbacks out of messageRouter * OCD * more OCD * fix forwarder test * even more OCD * maximum OCD * package name collision, copy lock by value
21 lines
425 B
Go
21 lines
425 B
Go
package selector
|
|
|
|
import (
|
|
"github.com/livekit/protocol/livekit"
|
|
"github.com/thoas/go-funk"
|
|
)
|
|
|
|
// RandomSelector selects an available node at random
|
|
type RandomSelector struct {
|
|
}
|
|
|
|
func (s *RandomSelector) SelectNode(nodes []*livekit.Node) (*livekit.Node, error) {
|
|
nodes = GetAvailableNodes(nodes)
|
|
if len(nodes) == 0 {
|
|
return nil, ErrNoAvailableNodes
|
|
}
|
|
|
|
idx := funk.RandomInt(0, len(nodes))
|
|
return nodes[idx], nil
|
|
}
|