code: func (s *GRPCServer) Init() error {
  	// Create our server
  	var opts []grpc.ServerOption
  	if s.TLS != nil {
  		opts = append(opts, grpc.Creds(credentials.NewTLS(s.TLS)))
  	}
  	s.server = s.Server(opts)
  
  	// Register the health service
  	healthCheck := health.NewServer()
  	healthCheck.SetServingStatus(
  		GRPCServiceName, grpc_health_v1.HealthCheckResponse_SERVING)
  	grpc_health_v1.RegisterHealthServer(s.server, healthCheck)
  
  	// Register the broker service
  	brokerServer := newGRPCBrokerServer()
  	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)
  		if !ok {
  			return fmt.Errorf("%q is not a GRPC-compatible plugin", k)
  		}
  
  		if err := p.GRPCServer(s.broker, s.server); err != nil {
  			return fmt.Errorf("error registering %q: %s", k, err)
  		}
  	}
  
  	return nil
  }
docs: // ServerProtocol impl.