github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/apps/transfer/handler.go (about) 1 package transfer 2 3 import ( 4 "fmt" 5 6 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 7 sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors" 8 tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types" 9 10 "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/transfer/keeper" 11 "github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/transfer/types" 12 ) 13 14 // NewHandler returns sdk.Handler for IBC token transfer module messages 15 func NewHandler(k keeper.Keeper) sdk.Handler { 16 return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { 17 if !tmtypes.HigherThanVenus1(ctx.BlockHeight()) { 18 errMsg := fmt.Sprintf("ibc transfer is not supported at height %d", ctx.BlockHeight()) 19 return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) 20 } 21 22 ctx.SetEventManager(sdk.NewEventManager()) 23 24 switch msg := msg.(type) { 25 case *types.MsgTransfer: 26 res, err := k.Transfer(sdk.WrapSDKContext(ctx), msg) 27 return sdk.WrapServiceResult(ctx, res, err) 28 29 default: 30 return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized ICS-20 transfer message type: %T", msg) 31 } 32 } 33 }