|
1 | 1 | package keeper |
2 | 2 |
|
3 | 3 | import ( |
| 4 | + "bytes" |
4 | 5 | "context" |
5 | 6 |
|
6 | 7 | "cosmossdk.io/core/appmodule" |
7 | 8 | "cosmossdk.io/log" |
| 9 | + storetypes "cosmossdk.io/store/types" |
8 | 10 |
|
9 | 11 | "github.com/cosmos/cosmos-sdk/codec" |
| 12 | + "github.com/cosmos/cosmos-sdk/runtime" |
10 | 13 | sdk "github.com/cosmos/cosmos-sdk/types" |
11 | 14 |
|
12 | 15 | connectionkeeper "github.com/cosmos/ibc-go/v9/modules/core/03-connection/keeper" |
@@ -50,7 +53,7 @@ func NewKeeper( |
50 | 53 | } |
51 | 54 |
|
52 | 55 | // Logger returns a module-specific logger. |
53 | | -func (Keeper) Logger(ctx context.Context) log.Logger { |
| 56 | +func (*Keeper) Logger(ctx context.Context) log.Logger { |
54 | 57 | sdkCtx := sdk.UnwrapSDKContext(ctx) // TODO: https://github.com/cosmos/ibc-go/issues/5917 |
55 | 58 | return sdkCtx.Logger().With("module", "x/"+exported.ModuleName+"/"+types.SubModuleName) |
56 | 59 | } |
@@ -194,3 +197,57 @@ func (k *Keeper) DeleteAsyncPacket(ctx context.Context, clientID string, sequenc |
194 | 197 | panic(err) |
195 | 198 | } |
196 | 199 | } |
| 200 | + |
| 201 | +// GetAllPacketCommitmentsForClient returns all stored PacketCommitments objects for a specified |
| 202 | +// client ID. |
| 203 | +func (k *Keeper) GetAllPacketCommitmentsForClient(ctx context.Context, clientID string) []types.PacketState { |
| 204 | + store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)) |
| 205 | + storePrefix := hostv2.PacketCommitmentPrefixKey(clientID) |
| 206 | + iterator := storetypes.KVStorePrefixIterator(store, storePrefix) |
| 207 | + |
| 208 | + var commitments []types.PacketState |
| 209 | + for ; iterator.Valid(); iterator.Next() { |
| 210 | + sequenceBz := bytes.TrimPrefix(iterator.Key(), storePrefix) |
| 211 | + sequence := sdk.BigEndianToUint64(sequenceBz) |
| 212 | + state := types.NewPacketState(clientID, sequence, iterator.Value()) |
| 213 | + |
| 214 | + commitments = append(commitments, state) |
| 215 | + } |
| 216 | + return commitments |
| 217 | +} |
| 218 | + |
| 219 | +// GetAllPacketAcknowledgementsForClient returns all stored PacketAcknowledgements objects for a specified |
| 220 | +// client ID. |
| 221 | +func (k *Keeper) GetAllPacketAcknowledgementsForClient(ctx context.Context, clientID string) []types.PacketState { |
| 222 | + store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)) |
| 223 | + storePrefix := hostv2.PacketAcknowledgementPrefixKey(clientID) |
| 224 | + iterator := storetypes.KVStorePrefixIterator(store, storePrefix) |
| 225 | + |
| 226 | + var acknowledgements []types.PacketState |
| 227 | + for ; iterator.Valid(); iterator.Next() { |
| 228 | + sequenceBz := bytes.TrimPrefix(iterator.Key(), storePrefix) |
| 229 | + sequence := sdk.BigEndianToUint64(sequenceBz) |
| 230 | + state := types.NewPacketState(clientID, sequence, iterator.Value()) |
| 231 | + |
| 232 | + acknowledgements = append(acknowledgements, state) |
| 233 | + } |
| 234 | + return acknowledgements |
| 235 | +} |
| 236 | + |
| 237 | +// GetAllPacketReceiptsForClient returns all stored PacketReceipts objects for a specified |
| 238 | +// client ID. |
| 239 | +func (k *Keeper) GetAllPacketReceiptsForClient(ctx context.Context, clientID string) []types.PacketState { |
| 240 | + store := runtime.KVStoreAdapter(k.KVStoreService.OpenKVStore(ctx)) |
| 241 | + storePrefix := hostv2.PacketReceiptPrefixKey(clientID) |
| 242 | + iterator := storetypes.KVStorePrefixIterator(store, storePrefix) |
| 243 | + |
| 244 | + var receipts []types.PacketState |
| 245 | + for ; iterator.Valid(); iterator.Next() { |
| 246 | + sequenceBz := bytes.TrimPrefix(iterator.Key(), storePrefix) |
| 247 | + sequence := sdk.BigEndianToUint64(sequenceBz) |
| 248 | + state := types.NewPacketState(clientID, sequence, iterator.Value()) |
| 249 | + |
| 250 | + receipts = append(receipts, state) |
| 251 | + } |
| 252 | + return receipts |
| 253 | +} |
0 commit comments