func serve()

in grpc-xds/greeter-go/pkg/server/server.go [211:236]


func serve(logger logr.Logger, c Config, servingGRPCServer grpcserver, healthServer *health.Server, healthGRPCServer *grpc.Server) error {
	servingListener, err := net.Listen("tcp4", fmt.Sprintf(":%d", c.ServingPort))
	if err != nil {
		return fmt.Errorf("could not create TCP listener on gRPC serving port=%d: %w", c.ServingPort, err)
	}
	healthListener, err := net.Listen("tcp4", fmt.Sprintf(":%d", c.HealthPort))
	if err != nil {
		return fmt.Errorf("could not create TCP listener on gRPC health port=%d: %w", c.HealthPort, err)
	}
	httpHealthListener, err := net.Listen("tcp4", fmt.Sprintf(":%d", c.HTTPHealthPort))
	if err != nil {
		return fmt.Errorf("could not create TCP listener on HTTP health port=%d: %w", c.HealthPort, err)
	}
	logger.V(1).Info("Greeter service listening", "port", c.ServingPort, "healthPort", c.HealthPort, "httpHealthPort", c.HTTPHealthPort, "nextHop", c.NextHop)
	go func() {
		err := servingGRPCServer.Serve(servingListener)
		if err != nil {
			healthServer.SetServingStatus("", healthpb.HealthCheckResponse_NOT_SERVING)
			healthServer.SetServingStatus(helloworldpb.Greeter_ServiceDesc.ServiceName, healthpb.HealthCheckResponse_NOT_SERVING)
		}
	}()
	go func() {
		listenHTTPHealth(logger, httpHealthListener, healthServer)
	}()
	return healthGRPCServer.Serve(healthListener)
}