github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/cmd/fastcache1e6/prod_grpc.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/angenalZZZ/gofunc/rpc"
     6  	"google.golang.org/grpc"
     7  	"google.golang.org/grpc/credentials"
     8  	"google.golang.org/grpc/reflection"
     9  	"google.golang.org/grpc/testdata"
    10  )
    11  
    12  func ProdGRPC() {
    13  	var opts []grpc.ServerOption
    14  	if *flagTls {
    15  		if *flagCert == "" {
    16  			*flagCert = testdata.Path("server1.pem")
    17  		}
    18  		if *flagKey == "" {
    19  			*flagKey = testdata.Path("server1.key")
    20  		}
    21  		cred, err := credentials.NewServerTLSFromFile(*flagCert, *flagKey)
    22  		if err != nil {
    23  			_ = fmt.Errorf("failed to generate credentials %v\n", err)
    24  			return
    25  		}
    26  		opts = []grpc.ServerOption{grpc.Creds(cred)}
    27  	}
    28  
    29  	svr := grpc.NewServer(opts...)
    30  	RegisterCacheServiceServer(svr, defaultService)
    31  	reflection.Register(svr)
    32  
    33  	g, err := rpc.NewGraceGrpc(svr, "tcp", fmt.Sprintf("%d", *flagPort), "log.pid", "log.yaml")
    34  	if err != nil {
    35  		_ = fmt.Errorf("failed to new grace grpc: %v\n", err)
    36  		return
    37  	}
    38  	if err = g.Serve(); err != nil {
    39  		_ = fmt.Errorf("failed to serve: %v\n", err)
    40  	}
    41  }