-
Notifications
You must be signed in to change notification settings - Fork 179
/
keeper_dump.go
97 lines (73 loc) · 3.05 KB
/
keeper_dump.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package keeper
import (
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/okex/okexchain/x/common"
"github.com/okex/okexchain/x/order/types"
"github.com/tendermint/tendermint/libs/log"
)
// DumpStore dumps all key-value message from KVStore
func (k Keeper) DumpStore(ctx sdk.Context) {
logger := ctx.Logger().With("module", "order")
orderStore := ctx.KVStore(k.orderStoreKey)
orderIDs := []string{}
dumpStringHandler := func(key string, it sdk.Iterator, v interface{}) {
logger.Error(fmt.Sprintf("%s: <%s> -> <%v>", key, types.GetKey(it), v))
}
dumpIntHandler := func(key string, it sdk.Iterator, v interface{}) {
logger.Error(fmt.Sprintf("%s: <%v> -> <%v>", key, common.BytesToInt64(it.Key()[1:]), v))
}
dumpKvIntHandler := func(key string, it sdk.Iterator, v interface{}) {
logger.Error(fmt.Sprintf("%s: <%v> -> <%v>", key, common.BytesToInt64(it.Key()[1:]),
common.BytesToInt64(it.Value())))
}
unmarshalHandler := func(bz []byte, ptr interface{}) {
k.cdc.MustUnmarshalBinaryBare(bz, ptr)
}
unmarshalJSONHanlder := func(bz []byte, ptr interface{}) {
k.cdc.MustUnmarshalJSON(bz, ptr)
}
var order types.Order
dumpKvs(orderStore, types.OrderKey, "OrderKey", &order, unmarshalHandler, dumpStringHandler)
var depthBook types.DepthBook
dumpKvs(orderStore, types.DepthBookKey, "DepthbookKey", &depthBook, unmarshalHandler, dumpStringHandler)
var price sdk.Dec
dumpKvs(orderStore, types.PriceKey, "PriceKey", &price, unmarshalHandler, dumpStringHandler)
dumpKvs(orderStore, types.OrderNumPerBlockKey, "OrderNumPerBlockKey", nil, nil, dumpKvIntHandler)
dumpKvs(orderStore, types.OrderIDsKey, "OrderIDsKey", &orderIDs, unmarshalJSONHanlder, dumpStringHandler)
var expireBlockNumbers []int64
dumpKvs(orderStore, types.ExpireBlockHeightKey, "ExpireBlockHeightKey", &expireBlockNumbers, unmarshalHandler, dumpIntHandler)
dumpKv(orderStore, logger, types.LastExpiredBlockHeightKey, "LastExpiredBlockHeightKey")
dumpKv(orderStore, logger, types.OpenOrderNumKey, "OpenOrderNumKey")
dumpKv(orderStore, logger, types.StoreOrderNumKey, "StoreOrderNumKey")
dumpKvJSON(orderStore, k, logger, types.RecentlyClosedOrderIDsKey, "RecentlyClosedOrderIDsKey", &orderIDs)
}
func dumpKvs(orderStore sdk.KVStore, k []byte, key string, v interface{},
unmarshalHandler func([]byte, interface{}),
dumpHandler func(string, sdk.Iterator, interface{})) {
orderIter := sdk.KVStorePrefixIterator(orderStore, k)
for ; orderIter.Valid(); orderIter.Next() {
if unmarshalHandler != nil {
unmarshalHandler(orderIter.Value(), v)
}
if dumpHandler != nil {
dumpHandler(key, orderIter, v)
}
}
orderIter.Close()
}
func dumpKvJSON(store sdk.KVStore, keeper Keeper, logger log.Logger, k []byte, key string, v interface{}) {
bz := store.Get(k)
if bz != nil {
keeper.cdc.MustUnmarshalJSON(bz, v)
}
logger.Error(fmt.Sprintf("%s: -> <%v>", key, v))
}
func dumpKv(store sdk.KVStore, logger log.Logger, k []byte, key string) {
bz := store.Get(k)
var v interface{} = bz
if bz != nil {
v = common.BytesToInt64(bz)
}
logger.Error(fmt.Sprintf("%s: -> <%v>", key, v))
}