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)
        }
}