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  }