|
|
- package core
-
- import (
- "fmt"
- "os"
- "runtime/pprof"
- "strconv"
-
- ctypes "github.com/tendermint/tendermint/rpc/core/types"
- )
-
- func UnsafeSetConfig(typ, key, value string) (*ctypes.ResultUnsafeSetConfig, error) {
- switch typ {
- case "string":
- config.Set(key, value)
- case "int":
- val, err := strconv.Atoi(value)
- if err != nil {
- return nil, fmt.Errorf("non-integer value found. key:%s; value:%s; err:%v", key, value, err)
- }
- config.Set(key, val)
- case "bool":
- switch value {
- case "true":
- config.Set(key, true)
- case "false":
- config.Set(key, false)
- default:
- return nil, fmt.Errorf("bool value must be true or false. got %s", value)
- }
- default:
- return nil, fmt.Errorf("Unknown type %s", typ)
- }
- return &ctypes.ResultUnsafeSetConfig{}, nil
- }
-
- var profFile *os.File
-
- func UnsafeStartCPUProfiler(filename string) (*ctypes.ResultUnsafeProfile, error) {
- var err error
- profFile, err = os.Create(filename)
- if err != nil {
- return nil, err
- }
- err = pprof.StartCPUProfile(profFile)
- if err != nil {
- return nil, err
- }
- return &ctypes.ResultUnsafeProfile{}, nil
- }
-
- func UnsafeStopCPUProfiler() (*ctypes.ResultUnsafeProfile, error) {
- pprof.StopCPUProfile()
- profFile.Close()
- return &ctypes.ResultUnsafeProfile{}, nil
- }
-
- func UnsafeWriteHeapProfile(filename string) (*ctypes.ResultUnsafeProfile, error) {
- memProfFile, err := os.Create(filename)
- if err != nil {
- return nil, err
- }
- pprof.WriteHeapProfile(memProfFile)
- memProfFile.Close()
-
- return &ctypes.ResultUnsafeProfile{}, nil
- }
|