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  }