github.com/Heebron/moby@v0.0.0-20221111184709-6eab4f55faf7/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 "github.com/moby/buildkit/util/grpcerrors" 6 "golang.org/x/net/http2" 7 "google.golang.org/grpc" 8 ) 9 10 type grpcRouter struct { 11 routes []router.Route 12 grpcServer *grpc.Server 13 h2Server *http2.Server 14 } 15 16 // NewRouter initializes a new grpc http router 17 func NewRouter(backends ...Backend) router.Router { 18 r := &grpcRouter{ 19 h2Server: &http2.Server{}, 20 grpcServer: grpc.NewServer( 21 grpc.UnaryInterceptor(grpcerrors.UnaryServerInterceptor), 22 grpc.StreamInterceptor(grpcerrors.StreamServerInterceptor), 23 ), 24 } 25 for _, b := range backends { 26 b.RegisterGRPC(r.grpcServer) 27 } 28 r.initRoutes() 29 return r 30 } 31 32 // Routes returns the available routers to the session controller 33 func (gr *grpcRouter) Routes() []router.Route { 34 return gr.routes 35 } 36 37 func (gr *grpcRouter) initRoutes() { 38 gr.routes = []router.Route{ 39 router.NewPostRoute("/grpc", gr.serveGRPC), 40 } 41 }