]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blobdiff - vendor/github.com/hashicorp/go-plugin/grpc_server.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / hashicorp / go-plugin / grpc_server.go
index 3a727393c684365434e9734848f624aa17fb45d3..d3dbf1cedcb87ba2a27ba30087dbd6ba0d0e71a4 100644 (file)
@@ -8,6 +8,8 @@ import (
        "io"
        "net"
 
+       hclog "github.com/hashicorp/go-hclog"
+       "github.com/hashicorp/go-plugin/internal/plugin"
        "google.golang.org/grpc"
        "google.golang.org/grpc/credentials"
        "google.golang.org/grpc/health"
@@ -52,6 +54,8 @@ type GRPCServer struct {
        config GRPCServerConfig
        server *grpc.Server
        broker *GRPCBroker
+
+       logger hclog.Logger
 }
 
 // ServerProtocol impl.
@@ -71,10 +75,16 @@ func (s *GRPCServer) Init() error {
 
        // Register the broker service
        brokerServer := newGRPCBrokerServer()
-       RegisterGRPCBrokerServer(s.server, brokerServer)
+       plugin.RegisterGRPCBrokerServer(s.server, brokerServer)
        s.broker = newGRPCBroker(brokerServer, s.TLS)
        go s.broker.Run()
 
+       // Register the controller
+       controllerServer := &grpcControllerServer{
+               server: s,
+       }
+       plugin.RegisterGRPCControllerServer(s.server, controllerServer)
+
        // Register all our plugins onto the gRPC server.
        for k, raw := range s.Plugins {
                p, ok := raw.(GRPCPlugin)
@@ -83,7 +93,7 @@ func (s *GRPCServer) Init() error {
                }
 
                if err := p.GRPCServer(s.broker, s.server); err != nil {
-                       return fmt.Errorf("error registring %q: %s", k, err)
+                       return fmt.Errorf("error registering %q: %s", k, err)
                }
        }
 
@@ -117,11 +127,11 @@ func (s *GRPCServer) Config() string {
 }
 
 func (s *GRPCServer) Serve(lis net.Listener) {
-       // Start serving in a goroutine
-       go s.server.Serve(lis)
-
-       // Wait until graceful completion
-       <-s.DoneCh
+       defer close(s.DoneCh)
+       err := s.server.Serve(lis)
+       if err != nil {
+               s.logger.Error("grpc server", "error", err)
+       }
 }
 
 // GRPCServerConfig is the extra configuration passed along for consumers