func (sb *GrpcServerBuilder) SetServerParameters(serverParams keepalive.ServerParameters) {
	keepAlive := grpc.KeepaliveParams(serverParams)
	sb.AddOption(keepAlive)
}
ServerParameters is used to set keepalive and max-age parameters on the server-side.
package grpc_server
import (
	"crypto/tls"
	"errors"
	"fmt"
	grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
	log "github.com/sirupsen/logrus"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials"
	"google.golang.org/grpc/health"
	"google.golang.org/grpc/health/grpc_health_v1"
	"google.golang.org/grpc/keepalive"
	"google.golang.org/grpc/reflection"
	"net"
	"os"
	"os/signal"
	"syscall"
)
type GrpcServer interface {
	Start(address string) error
	AwaitTermination(shutdownHook func())
	RegisterService(reg func(*grpc.Server))
	GetListener() net.Listener
}
type GrpcServerBuilder struct {
	options                   []grpc.ServerOption
	enabledReflection         bool
	shutdownHook              func()
	enabledHealthCheck        bool
	disableDefaultHealthCheck bool
}
type grpcServer struct {
	server   *grpc.Server
	listener net.Listener
}
func (s grpcServer) GetListener() net.Listener {
	return s.listener
}
func (sb *GrpcServerBuilder) AddOption(o grpc.ServerOption) {
	sb.options = append(sb.options, o)
}
func (sb *GrpcServerBuilder) EnableReflection(e bool) {
	sb.enabledReflection = e
}
func (sb *GrpcServerBuilder) DisableDefaultHealthCheck(e bool) {
	sb.disableDefaultHealthCheck = e
}