grpc.go 815 B

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