github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/engine/api/server/router/grpc/grpc.go (about)

     1  package grpc // import "github.com/docker/docker/api/server/router/grpc"
     2  
     3  import (
     4  	"github.com/docker/docker/api/server/router"
     5  	"golang.org/x/net/http2"
     6  	"google.golang.org/grpc"
     7  )
     8  
     9  type grpcRouter struct {
    10  	routes     []router.Route
    11  	grpcServer *grpc.Server
    12  	h2Server   *http2.Server
    13  }
    14  
    15  // NewRouter initializes a new grpc http router
    16  func NewRouter(backends ...Backend) router.Router {
    17  	r := &grpcRouter{
    18  		h2Server:   &http2.Server{},
    19  		grpcServer: grpc.NewServer(),
    20  	}
    21  	for _, b := range backends {
    22  		b.RegisterGRPC(r.grpcServer)
    23  	}
    24  	r.initRoutes()
    25  	return r
    26  }
    27  
    28  // Routes returns the available routers to the session controller
    29  func (r *grpcRouter) Routes() []router.Route {
    30  	return r.routes
    31  }
    32  
    33  func (r *grpcRouter) initRoutes() {
    34  	r.routes = []router.Route{
    35  		router.NewPostRoute("/grpc", r.serveGRPC),
    36  	}
    37  }