package server import ( "fmt" "git.rodere.systems/stream-service/api" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "log" "net" ) func startGRPCServer(address, certFile, keyFile string) error { // create a listener on TCP port lis, err := net.Listen("tcp", address) if err != nil { return fmt.Errorf("failed to listen: %v", err) } // create a server instance s := api.Server{} // Create the TLS credentials creds, err := credentials.NewServerTLSFromFile(certFile, keyFile) if err != nil { return fmt.Errorf("could not load TLS keys: %s", err) } // Create an array of gRPC options with the credentials opts := []grpc.ServerOption{grpc.Creds(creds), grpc.UnaryInterceptor(unaryInterceptor)} // create a gRPC server object grpcServer := grpc.NewServer(opts...) // attach the Ping service to the server api.RegisterPingServer(grpcServer, &s) // start the server log.Printf("starting HTTP/2 gRPC server on %s", address) if err := grpcServer.Serve(lis); err != nil { return fmt.Errorf("failed to serve: %s", err) } return nil }