aboutsummaryrefslogtreecommitdiff
path: root/server/grpc.go
diff options
context:
space:
mode:
authorCarlos Sosa <gnusosa@gnusosa.net>2020-06-22 11:33:39 -0700
committerCarlos Sosa <gnusosa@gnusosa.net>2020-06-22 11:33:39 -0700
commit0b609156b184d00ab1a6e742b9b998be4457345e (patch)
tree9283646735cf0f7a984ff0fe4013f6abc7a8be4f /server/grpc.go
First Commit
Diffstat (limited to 'server/grpc.go')
-rw-r--r--server/grpc.go45
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
+}