github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/ibc-go/modules/apps/29-fee/handler.go (about)

     1  package fee
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/29-fee/types"
     7  
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	sdkerrors "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types/errors"
    10  	"github.com/fibonacci-chain/fbc/libs/ibc-go/modules/apps/29-fee/keeper"
    11  	tmtypes "github.com/fibonacci-chain/fbc/libs/tendermint/types"
    12  )
    13  
    14  func NewHandler(k keeper.Keeper) sdk.Handler {
    15  	return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) {
    16  		if !tmtypes.HigherThanVenus4(ctx.BlockHeight()) {
    17  			errMsg := fmt.Sprintf("ibc ica is not supported at height %d", ctx.BlockHeight())
    18  			return nil, sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg)
    19  		}
    20  
    21  		ctx.SetEventManager(sdk.NewEventManager())
    22  
    23  		switch detailMsg := msg.(type) {
    24  		case *types.MsgPayPacketFee:
    25  			res, err := k.PayPacketFee(sdk.WrapSDKContext(ctx), detailMsg)
    26  			return sdk.WrapServiceResult(ctx, res, err)
    27  		case *types.MsgRegisterCounterpartyPayee:
    28  			res, err := k.RegisterCounterpartyPayee(sdk.WrapSDKContext(ctx), detailMsg)
    29  			return sdk.WrapServiceResult(ctx, res, err)
    30  		case *types.MsgPayPacketFeeAsync:
    31  			res, err := k.PayPacketFeeAsync(sdk.WrapSDKContext(ctx), detailMsg)
    32  			return sdk.WrapServiceResult(ctx, res, err)
    33  		case *types.MsgRegisterPayee:
    34  			res, err := k.RegisterPayee(sdk.WrapSDKContext(ctx), detailMsg)
    35  			return sdk.WrapServiceResult(ctx, res, err)
    36  		default:
    37  			return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized  fee message type: %T", msg)
    38  		}
    39  
    40  	}
    41  }