You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.1 KiB
67 lines
1.1 KiB
package main
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"net"
|
|
"os"
|
|
"os/signal"
|
|
"sync"
|
|
|
|
"google.golang.org/grpc"
|
|
"whiteboxsystems.nl/openkvpoc/openkv"
|
|
)
|
|
|
|
var rpcAddr = "0.0.0.0:9999"
|
|
var uiAddr = "0.0.0.0:9095"
|
|
|
|
func main() {
|
|
stop := make(chan os.Signal, 1)
|
|
signal.Notify(stop, os.Interrupt)
|
|
wg := &sync.WaitGroup{}
|
|
|
|
openapisrv := NewServer()
|
|
openapisrv.LoadData("./data/data.db")
|
|
opts := []grpc.ServerOption{
|
|
// grpc.UnaryInterceptor(openapisrv.EnsureValidModule),
|
|
}
|
|
|
|
grpcServer := grpc.NewServer(opts...)
|
|
|
|
go func() {
|
|
lis, err := net.Listen("tcp", rpcAddr)
|
|
if err != nil {
|
|
log.Fatalf("failed to listen: %v", err)
|
|
}
|
|
|
|
openkv.RegisterOpenKVServer(grpcServer, openapisrv)
|
|
log.Printf("RPC Listening on %v", rpcAddr)
|
|
wg.Add(1)
|
|
grpcServer.Serve(lis)
|
|
}()
|
|
|
|
srv := NewUIServer(uiAddr)
|
|
srv.data = openapisrv.data
|
|
|
|
go func() {
|
|
wg.Add(1)
|
|
srv.ListenAndServe()
|
|
}()
|
|
|
|
<-stop
|
|
|
|
go func() {
|
|
grpcServer.GracefulStop()
|
|
wg.Done()
|
|
log.Println("Shutdown RPC server")
|
|
}()
|
|
|
|
go func() {
|
|
log.Println("Shutdown UI server...")
|
|
srv.Shutdown(context.Background())
|
|
wg.Done()
|
|
log.Println("UI Server shutdown...")
|
|
}()
|
|
|
|
wg.Wait()
|
|
}
|
|
|