d6e129179c
Implement global server as control plane Implement device to get their info from global server and connect each others
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"net"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"git.pengzhan.dev/ddp-simulator/pkg/env"
|
|
"git.pengzhan.dev/ddp-simulator/pkg/global"
|
|
pb "git.pengzhan.dev/ddp-simulator/proto"
|
|
log "github.com/sirupsen/logrus"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
var (
|
|
ip = flag.String("ip", "0.0.0.0", "The global server ip")
|
|
port = flag.Int("port", 3200, "The global server port")
|
|
configPath = flag.String("config-path", "", "Config file path")
|
|
)
|
|
|
|
func init() {
|
|
flag.Parse()
|
|
|
|
log.SetOutput(os.Stdout)
|
|
log.SetLevel(log.TraceLevel)
|
|
// log.SetReportCaller(true)
|
|
}
|
|
|
|
func main() {
|
|
lis, err := net.Listen(env.PROTOCOL, fmt.Sprintf("%s:%d", *ip, *port))
|
|
if err != nil {
|
|
log.Fatalf("failed to listen: %v", err)
|
|
}
|
|
c := make(chan os.Signal, 1)
|
|
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
|
go func() {
|
|
<-c
|
|
os.Exit(1)
|
|
}()
|
|
|
|
s := grpc.NewServer()
|
|
g := global.NewGlobalServer(*configPath)
|
|
pb.RegisterGlobalServiceServer(s, g)
|
|
|
|
if err := s.Serve(lis); err != nil {
|
|
log.Fatalf("failed to serve: %v", err)
|
|
}
|
|
}
|