|
|
- package core
-
- import (
- "fmt"
- "strconv"
-
- ctypes "github.com/tendermint/tendermint/rpc/core/types"
- "github.com/tendermint/tendermint/types"
- )
-
- func Status() (*ctypes.ResultStatus, error) {
- latestHeight := blockStore.Height()
- var (
- latestBlockMeta *types.BlockMeta
- latestBlockHash []byte
- latestAppHash []byte
- latestBlockTime int64
- )
- if latestHeight != 0 {
- latestBlockMeta = blockStore.LoadBlockMeta(latestHeight)
- latestBlockHash = latestBlockMeta.Hash
- latestAppHash = latestBlockMeta.Header.AppHash
- latestBlockTime = latestBlockMeta.Header.Time.UnixNano()
- }
-
- return &ctypes.ResultStatus{
- NodeInfo: p2pSwitch.NodeInfo(),
- PubKey: privValidator.PubKey,
- LatestBlockHash: latestBlockHash,
- LatestAppHash: latestAppHash,
- LatestBlockHeight: latestHeight,
- LatestBlockTime: latestBlockTime}, nil
- }
-
- 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
- }
|