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.

73 lines
1.2 KiB

2 years ago
package main
import (
"context"
"log"
"net"
"os"
"os/signal"
"sync"
"google.golang.org/grpc"
"whiteboxsystems.nl/openkvpoc/openkv"
)
var srvaddr = "0.0.0.0:8888"
var patientIf = "0.0.0.0:8085"
var binFolder = "./bin"
2 years ago
func main() {
stop := make(chan os.Signal, 1)
signal.Notify(stop, os.Interrupt)
wg := &sync.WaitGroup{}
if os.Getenv("BIN_FOLDER") != "" {
binFolder = os.Getenv("BIN_FOLDER")
}
2 years ago
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", srvaddr)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
openkv.RegisterOpenKVServer(grpcServer, openapisrv)
log.Printf("RPC Listening on %v", srvaddr)
wg.Add(1)
grpcServer.Serve(lis)
}()
srv := NewUIServer(patientIf)
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()
}