github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/core/simulation/decoder.go (about) 1 package simulation 2 3 import ( 4 "fmt" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec" 7 clientsim "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/02-client/simulation" 8 connectionsim "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/03-connection/simulation" 9 channelsim "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/04-channel/simulation" 10 host "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/24-host" 11 "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/core/keeper" 12 "github.com/fibonacci-chain/fbc/libs/tendermint/libs/kv" 13 ) 14 15 // NewDecodeStore returns a decoder function closure that unmarshals the KVPair's 16 // Value to the corresponding ibc type. 17 func NewDecodeStore(k keeper.Keeper) func(cdc *codec.Codec, kvA, kvB kv.Pair) string { 18 return func(cdc *codec.Codec, kvA, kvB kv.Pair) string { 19 if res, found := clientsim.NewDecodeStore(k.ClientKeeper, kvA, kvB); found { 20 return res 21 } 22 23 if res, found := connectionsim.NewDecodeStore(k.Codec(), kvA, kvB); found { 24 return res 25 } 26 27 if res, found := channelsim.NewDecodeStore(k.Codec(), kvA, kvB); found { 28 return res 29 } 30 31 panic(fmt.Sprintf("invalid %s key prefix: %s", host.ModuleName, string(kvA.Key))) 32 } 33 }