github.com/okex/exchain@v1.8.0/libs/ibc-go/modules/core/keeper/keeper.go (about) 1 package keeper 2 3 import ( 4 "github.com/okex/exchain/libs/cosmos-sdk/codec" 5 types2 "github.com/okex/exchain/libs/cosmos-sdk/codec/types" 6 sdk "github.com/okex/exchain/libs/cosmos-sdk/types" 7 capabilitykeeper "github.com/okex/exchain/libs/cosmos-sdk/x/capability/keeper" 8 "github.com/okex/exchain/libs/cosmos-sdk/x/params" 9 paramtypes "github.com/okex/exchain/libs/cosmos-sdk/x/params" 10 clientkeeper "github.com/okex/exchain/libs/ibc-go/modules/core/02-client/keeper" 11 clienttypes "github.com/okex/exchain/libs/ibc-go/modules/core/02-client/types" 12 connectionkeeper "github.com/okex/exchain/libs/ibc-go/modules/core/03-connection/keeper" 13 connectiontypes "github.com/okex/exchain/libs/ibc-go/modules/core/03-connection/types" 14 channelkeeper "github.com/okex/exchain/libs/ibc-go/modules/core/04-channel/keeper" 15 portkeeper "github.com/okex/exchain/libs/ibc-go/modules/core/05-port/keeper" 16 porttypes "github.com/okex/exchain/libs/ibc-go/modules/core/05-port/types" 17 "github.com/okex/exchain/libs/ibc-go/modules/core/types" 18 ) 19 20 var _ types.QueryServer = (*Keeper)(nil) 21 var _ IBCServerKeeper = (*Keeper)(nil) 22 23 // Keeper defines each ICS keeper for IBC 24 type Keeper struct { 25 // implements gRPC QueryServer interface 26 types.QueryService 27 28 cdc *codec.CodecProxy 29 paramSpace params.Subspace 30 31 ClientKeeper clientkeeper.Keeper 32 ConnectionKeeper connectionkeeper.Keeper 33 ChannelKeeper channelkeeper.Keeper 34 PortKeeper portkeeper.Keeper 35 Router *porttypes.Router 36 } 37 38 // NewKeeper creates a new ibc Keeper 39 func NewKeeper( 40 proxy *codec.CodecProxy, 41 key sdk.StoreKey, paramSpace paramtypes.Subspace, 42 stakingKeeper clienttypes.StakingKeeper, upgradeKeeper clienttypes.UpgradeKeeper, 43 scopedKeeper *capabilitykeeper.ScopedKeeper, 44 registry types2.InterfaceRegistry, 45 ) *Keeper { 46 //mm := codec.NewProtoCodec(registry) 47 //proxy:=codec.NewMarshalProxy(mm,cdcc) 48 if !paramSpace.HasKeyTable() { 49 keyTable := types.ParamKeyTable() 50 keyTable.RegisterParamSet(&clienttypes.Params{}) 51 keyTable.RegisterParamSet(&connectiontypes.Params{}) 52 paramSpace = paramSpace.WithKeyTable(keyTable) 53 } 54 clientKeeper := clientkeeper.NewKeeper(proxy, key, paramSpace, stakingKeeper, upgradeKeeper) 55 connectionKeeper := connectionkeeper.NewKeeper(proxy, key, paramSpace, clientKeeper) 56 portKeeper := portkeeper.NewKeeper(scopedKeeper) 57 channelKeeper := channelkeeper.NewKeeper(proxy, key, clientKeeper, connectionKeeper, portKeeper, scopedKeeper) 58 59 return &Keeper{ 60 cdc: proxy, 61 ClientKeeper: clientKeeper, 62 ConnectionKeeper: connectionKeeper, 63 ChannelKeeper: channelKeeper, 64 PortKeeper: portKeeper, 65 paramSpace: paramSpace, 66 } 67 } 68 69 // Codec returns the IBC module codec. 70 func (k Keeper) Codec() *codec.CodecProxy { 71 return k.cdc 72 } 73 74 // SetRouter sets the Router in IBC Keeper and seals it. The method panics if 75 // there is an existing router that's already sealed. 76 func (k *Keeper) SetRouter(rtr *porttypes.Router) { 77 if k.Router != nil && k.Router.Sealed() { 78 panic("cannot reset a sealed router") 79 } 80 81 k.PortKeeper.Router = rtr 82 k.Router = rtr 83 k.Router.Seal() 84 } 85 86 /// 87 func (k Keeper) GetPacketReceipt(ctx sdk.Context, portID, channelID string, sequence uint64) (string, bool) { 88 return k.ChannelKeeper.GetPacketReceipt(ctx, portID, channelID, sequence) 89 } 90 91 func (k Keeper) GetPacketCommitment(ctx sdk.Context, portID, channelID string, sequence uint64) []byte { 92 return k.ChannelKeeper.GetPacketCommitment(ctx, portID, channelID, sequence) 93 }