ics4_middleware.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package ibc_composability_mw
  2. import (
  3. // external libraries
  4. sdk "github.com/cosmos/cosmos-sdk/types"
  5. capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types"
  6. // ibc-go
  7. porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types"
  8. ibcexported "github.com/cosmos/ibc-go/v4/modules/core/exported"
  9. "github.com/wormhole-foundation/wormchain/x/ibc-composability-mw/keeper"
  10. )
  11. var _ porttypes.ICS4Wrapper = &ICS4Middleware{}
  12. type ICS4Middleware struct {
  13. channel porttypes.ICS4Wrapper
  14. keeper *keeper.Keeper
  15. }
  16. func NewICS4Middleware(channel porttypes.ICS4Wrapper, keeper *keeper.Keeper) ICS4Middleware {
  17. return ICS4Middleware{
  18. channel: channel,
  19. keeper: keeper,
  20. }
  21. }
  22. func (i ICS4Middleware) SendPacket(ctx sdk.Context, channelCap *capabilitytypes.Capability, packet ibcexported.PacketI) error {
  23. err := i.channel.SendPacket(ctx, channelCap, packet)
  24. return err
  25. }
  26. func (i ICS4Middleware) WriteAcknowledgement(ctx sdk.Context, chanCap *capabilitytypes.Capability, packet ibcexported.PacketI, ack ibcexported.Acknowledgement) error {
  27. packet = i.keeper.WriteAcknowledgement(ctx, packet)
  28. err := i.channel.WriteAcknowledgement(ctx, chanCap, packet, ack)
  29. return err
  30. }
  31. func (i ICS4Middleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) {
  32. version, err := i.channel.GetAppVersion(ctx, portID, channelID)
  33. return version, err
  34. }