mirror of
https://github.com/fluencelabs/tendermint
synced 2025-07-31 04:01:55 +00:00
Spell out the package explicitly. This commit is totally textual, and does not change any logic. The swiss-army knife package may serve a kick-start in early stage development. But as the codebase growing, we might want to retire it gradually: For simple wrapping functions, just inline it on the call site. For larger pice of code, make it an independent package.
62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package dummy
|
|
|
|
import (
|
|
"encoding/hex"
|
|
"strings"
|
|
|
|
"github.com/tendermint/abci/types"
|
|
common "github.com/tendermint/go-common"
|
|
"github.com/tendermint/go-merkle"
|
|
"github.com/tendermint/go-wire"
|
|
)
|
|
|
|
type DummyApplication struct {
|
|
state merkle.Tree
|
|
}
|
|
|
|
func NewDummyApplication() *DummyApplication {
|
|
state := merkle.NewIAVLTree(0, nil)
|
|
return &DummyApplication{state: state}
|
|
}
|
|
|
|
func (app *DummyApplication) Info() (resInfo types.ResponseInfo) {
|
|
return types.ResponseInfo{Data: common.Fmt("{\"size\":%v}", app.state.Size())}
|
|
}
|
|
|
|
func (app *DummyApplication) SetOption(key string, value string) (log string) {
|
|
return ""
|
|
}
|
|
|
|
// tx is either "key=value" or just arbitrary bytes
|
|
func (app *DummyApplication) DeliverTx(tx []byte) types.Result {
|
|
parts := strings.Split(string(tx), "=")
|
|
if len(parts) == 2 {
|
|
app.state.Set([]byte(parts[0]), []byte(parts[1]))
|
|
} else {
|
|
app.state.Set(tx, tx)
|
|
}
|
|
return types.OK
|
|
}
|
|
|
|
func (app *DummyApplication) CheckTx(tx []byte) types.Result {
|
|
return types.OK
|
|
}
|
|
|
|
func (app *DummyApplication) Commit() types.Result {
|
|
hash := app.state.Hash()
|
|
return types.NewResultOK(hash, "")
|
|
}
|
|
|
|
func (app *DummyApplication) Query(query []byte) types.Result {
|
|
index, value, exists := app.state.Get(query)
|
|
queryResult := QueryResult{index, string(value), hex.EncodeToString(value), exists}
|
|
return types.NewResultOK(wire.JSONBytes(queryResult), "")
|
|
}
|
|
|
|
type QueryResult struct {
|
|
Index int `json:"index"`
|
|
Value string `json:"value"`
|
|
ValueHex string `json:"valueHex"`
|
|
Exists bool `json:"exists"`
|
|
}
|