func main()

in cmd/server/main.go [45:107]


func main() {
	flag.Parse()

	// Listen for connections on the gRPC service and HTTP proxy ports.
	grpcLis, err := net.Listen("tcp", fmt.Sprintf(":%d", *grpcPort))
	if err != nil {
		glog.Fatalf("failed to listen: %v\n", err)
	}

	httpLis, err := net.Listen("tcp", fmt.Sprintf(":%d", *httpPort))
	if err != nil {
		glog.Fatalf("failed to listen: %v\n", err)
	}

	grpcServer := grpc.NewServer()

	reflection.Register(grpcServer)

	// Register a new SecureSessionService instance to handle RPCs.
	var tlsVersion uint16
	tlsVersion = tls.VersionTLS13
	if *useTLS12 {
		tlsVersion = tls.VersionTLS12
	}

	serv, _ := server.NewSecureSessionService(tlsVersion, *audience)
	ssgrpc.RegisterConfidentialEkmSessionEstablishmentServiceServer(grpcServer, serv)
	cwgrpc.RegisterConfidentialWrapUnwrapServiceServer(grpcServer, serv)

	httpService, err := server.NewSecureSessionHTTPService(grpcLis.Addr().String(), "")
	if err != nil {
		glog.Fatalf("failed to create HTTP service: %v\n", err)
	}

	httpServ := &http.Server{
		Addr:    httpLis.Addr().String(),
		Handler: http.HandlerFunc(httpService.Handler),
	}

	// Use signal library to gracefully shut down servers on SIGINT/SIGTERM.
	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)

	// Start gRPC server.
	go func() {
		fmt.Printf("Starting gRPC server on %v\n", grpcLis.Addr().String())
		grpcServer.Serve(grpcLis)
	}()

	// Start HTTP proxy.
	go func() {
		fmt.Printf("Starting HTTP server on %v\n", httpLis.Addr().String())
		httpServ.Serve(httpLis)
	}()

	// Wait for a SIGINT or SIGTERM, then shut down severs.
	sig := <-sigs
	fmt.Printf("Received %v signal\n", sig)

	fmt.Println("Shutting down servers...")
	grpcServer.Stop()
	httpServ.Close()
}