mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
9f85b74fc9
Former-commit-id: da4f38eb9034daa49446df3ee529423b98f9b331
48 lines
1.7 KiB
Go
48 lines
1.7 KiB
Go
// Package pprof provides native pprof support via middleware. See _examples/miscellaneous/pprof
|
|
package pprof
|
|
|
|
import (
|
|
"net/http/pprof"
|
|
"strings"
|
|
|
|
"github.com/kataras/iris/context"
|
|
"github.com/kataras/iris/core/handlerconv"
|
|
)
|
|
|
|
// New returns a new pprof (profile, cmdline, symbol, goroutine, heap, threadcreate, debug/block) Middleware.
|
|
// Note: Route MUST have the last named parameter wildcard named '{action:path}'
|
|
func New() context.Handler {
|
|
indexHandler := handlerconv.FromStd(pprof.Index)
|
|
cmdlineHandler := handlerconv.FromStd(pprof.Cmdline)
|
|
profileHandler := handlerconv.FromStd(pprof.Profile)
|
|
symbolHandler := handlerconv.FromStd(pprof.Symbol)
|
|
goroutineHandler := handlerconv.FromStd(pprof.Handler("goroutine"))
|
|
heapHandler := handlerconv.FromStd(pprof.Handler("heap"))
|
|
threadcreateHandler := handlerconv.FromStd(pprof.Handler("threadcreate"))
|
|
debugBlockHandler := handlerconv.FromStd(pprof.Handler("block"))
|
|
|
|
return func(ctx context.Context) {
|
|
ctx.ContentType("text/html")
|
|
actionPathParameter := ctx.Values().GetString("action")
|
|
if len(actionPathParameter) > 1 {
|
|
if strings.Contains(actionPathParameter, "cmdline") {
|
|
cmdlineHandler((ctx))
|
|
} else if strings.Contains(actionPathParameter, "profile") {
|
|
profileHandler(ctx)
|
|
} else if strings.Contains(actionPathParameter, "symbol") {
|
|
symbolHandler(ctx)
|
|
} else if strings.Contains(actionPathParameter, "goroutine") {
|
|
goroutineHandler(ctx)
|
|
} else if strings.Contains(actionPathParameter, "heap") {
|
|
heapHandler(ctx)
|
|
} else if strings.Contains(actionPathParameter, "threadcreate") {
|
|
threadcreateHandler(ctx)
|
|
} else if strings.Contains(actionPathParameter, "debug/block") {
|
|
debugBlockHandler(ctx)
|
|
}
|
|
} else {
|
|
indexHandler(ctx)
|
|
}
|
|
}
|
|
}
|