func main()

in step5/src/server/main.go [102:142]


func main() {
	port := listenPort
	if os.Getenv("PORT") != "" {
		port = os.Getenv("PORT")
	}

	lis, err := net.Listen("tcp", fmt.Sprintf(":%s", port))
	if err != nil {
		log.Fatalf("error %v; error listening port %v", err, port)
	}

	// step2. setup OpenTelemetry
	tp, err := initTracer()
	if err != nil {
		log.Fatalf("failed to initialize TracerProvider: %v", err)
	}
	defer func() {
		if err := tp.Shutdown(context.Background()); err != nil {
			log.Fatalf("error shutting down TracerProvider: %v", err)
		}
	}()
	// step2. end setup

	// step5. start profiler
	go initProfiler()
	// step5. end

	svc := NewServerService()
	// step2: add interceptor
	interceptorOpt := otelgrpc.WithTracerProvider(otel.GetTracerProvider())
	srv := grpc.NewServer(
		grpc.UnaryInterceptor(otelgrpc.UnaryServerInterceptor(interceptorOpt)),
		grpc.StreamInterceptor(otelgrpc.StreamServerInterceptor(interceptorOpt)),
	)
	// step2: end adding interceptor
	shakesapp.RegisterShakespeareServiceServer(srv, svc)
	healthpb.RegisterHealthServer(srv, svc)
	if err := srv.Serve(lis); err != nil {
		log.Fatalf("error serving server: %v", err)
	}
}