package main import ( "log" "net" "os" "time" "git.autistici.org/ale/lb" "git.autistici.org/ale/lb/proto" "google.golang.org/grpc" ) func usage() { log.Printf("%s bind-addr", os.Args[0]) } func main() { if len(os.Args) < 2 { usage() return } limits := []*lb.Limit{ { Dimension: "bandwidth", Min: 0, Max: 1, }, } balancer := lb.New(limits, 1, time.Hour) lis, err := net.Listen("tcp", os.Args[1]) if err != nil { log.Fatalln(err) } server := grpc.NewServer() lbpb.RegisterLoadBalancerServer(server, balancer) go server.Serve(lis) defer server.Stop() for { req, err := balancer.Select(nil, &lbpb.SelectRequest{}) if err != nil { log.Println(err) } else { log.Println(req.NodeName) } time.Sleep(time.Second) } }