1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package debug // import "github.com/docker/docker/api/server/router/debug"
- import (
- "context"
- "expvar"
- "net/http"
- "net/http/pprof"
- "github.com/docker/docker/api/server/httputils"
- "github.com/docker/docker/api/server/router"
- )
- // NewRouter creates a new debug router
- // The debug router holds endpoints for debug the daemon, such as those for pprof.
- func NewRouter() router.Router {
- r := &debugRouter{}
- r.initRoutes()
- return r
- }
- type debugRouter struct {
- routes []router.Route
- }
- func (r *debugRouter) initRoutes() {
- r.routes = []router.Route{
- router.NewGetRoute("/vars", frameworkAdaptHandler(expvar.Handler())),
- router.NewGetRoute("/pprof/", frameworkAdaptHandlerFunc(pprof.Index)),
- router.NewGetRoute("/pprof/cmdline", frameworkAdaptHandlerFunc(pprof.Cmdline)),
- router.NewGetRoute("/pprof/profile", frameworkAdaptHandlerFunc(pprof.Profile)),
- router.NewGetRoute("/pprof/symbol", frameworkAdaptHandlerFunc(pprof.Symbol)),
- router.NewGetRoute("/pprof/trace", frameworkAdaptHandlerFunc(pprof.Trace)),
- router.NewGetRoute("/pprof/{name}", handlePprof),
- }
- }
- func (r *debugRouter) Routes() []router.Route {
- return r.routes
- }
- func frameworkAdaptHandler(handler http.Handler) httputils.APIFunc {
- return func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
- handler.ServeHTTP(w, r)
- return nil
- }
- }
- func frameworkAdaptHandlerFunc(handler http.HandlerFunc) httputils.APIFunc {
- return func(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
- handler(w, r)
- return nil
- }
- }
|