diff options
Diffstat (limited to 'server/grpc.go')
| -rw-r--r-- | server/grpc.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/server/grpc.go b/server/grpc.go new file mode 100644 index 0000000..cd383da --- /dev/null +++ b/server/grpc.go @@ -0,0 +1,45 @@ +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 +} |
