Fix QueryUnreceivedPackets/Acks (#7320)

* fix queries

* proto stuff

* rebuild proto-tools off old makefile

* rm buf-stamp

* fix godoc

* rename and fix implementation of UnreceivedAcks

* lint

* Update proto/ibc/channel/query.proto

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

* Update x/ibc/04-channel/client/cli/query.go

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>

Co-authored-by: colin axnér <25233464+colin-axner@users.noreply.github.com>
Co-authored-by: Jack Zampolin <jack.zampolin@gmail.com>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
This commit is contained in:
Aditya 2020-09-18 05:56:20 -04:00 committed by GitHub
parent 23578a9612
commit 7b1efcb8ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 2174 additions and 1068 deletions

File diff suppressed because it is too large Load Diff

View File

@ -58,13 +58,21 @@ service Query {
option (google.api.http).get = "/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}";
}
// UnrelayedPackets returns all the unrelayed IBC packets associated with a
// UnreceivedPackets returns all the unrelayed IBC packets associated with a
// channel and sequences.
rpc UnrelayedPackets(QueryUnrelayedPacketsRequest) returns (QueryUnrelayedPacketsResponse) {
rpc UnreceivedPackets(QueryUnreceivedPacketsRequest) returns (QueryUnreceivedPacketsResponse) {
option (google.api.http).get = "/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments/"
"{packet_commitment_sequences}/packet_acks/{acknowledgements}/unrelayed_packets";
"{packet_commitment_sequences}/unreceived_packets";
}
// UnrelayedAcks returns all the unrelayed IBC acknowledgements associated with a
// channel and sequences.
rpc UnrelayedAcks(QueryUnrelayedAcksRequest) returns (QueryUnrelayedAcksResponse) {
option (google.api.http).get = "/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/packet_commitments/"
"{packet_commitment_sequences}/unrelayed_acks";
}
// NextSequenceReceive returns the next receive sequence for a given channel.
rpc NextSequenceReceive(QueryNextSequenceReceiveRequest) returns (QueryNextSequenceReceiveResponse) {
option (google.api.http).get = "/ibc/channel/v1beta1/channels/{channel_id}/ports/{port_id}/next_sequence";
@ -250,24 +258,41 @@ message QueryPacketAcknowledgementResponse {
ibc.client.Height proof_height = 4 [(gogoproto.nullable) = false];
}
// QueryUnrelayedPacketsRequest is the request type for the
// Query/UnrelayedPackets RPC method
message QueryUnrelayedPacketsRequest {
// QueryUnreceivedPacketsRequest is the request type for the
// Query/UnreceivedPackets RPC method
message QueryUnreceivedPacketsRequest {
// port unique identifier
string port_id = 1;
// channel unique identifier
string channel_id = 2;
// list of packet sequences
repeated uint64 packet_commitment_sequences = 3;
// flag indicating if the return value is packet commitments or
// acknowledgements
bool acknowledgements = 4;
}
// QueryUnrelayedPacketsResponse is the request type for the
// Query/UnrelayedPacketCommitments RPC method
message QueryUnrelayedPacketsResponse {
// list of unrelayed packet sequences
// QueryUnreceivedPacketsResponse is the response type for the
// Query/UnreceivedPacketCommitments RPC method
message QueryUnreceivedPacketsResponse {
// list of unreceived packet sequences
repeated uint64 sequences = 1;
// query block height
ibc.client.Height height = 2 [(gogoproto.nullable) = false];
}
// QueryUnrelayedAcksRequest is the request type for the
// Query/UnrelayedAcks RPC method
message QueryUnrelayedAcksRequest {
// port unique identifier
string port_id = 1;
// channel unique identifier
string channel_id = 2;
// list of commitment sequences
repeated uint64 packet_commitment_sequences = 3;
}
// QueryUnrelayedAcksResponse is the response type for the
// Query/UnrelayedAcks RPC method
message QueryUnrelayedAcksResponse {
// list of unrelayed acknowledgement sequences
repeated uint64 sequences = 1;
// query block height
ibc.client.Height height = 2 [(gogoproto.nullable) = false];

View File

@ -24,7 +24,8 @@ func GetQueryCmd() *cobra.Command {
GetCmdQueryChannelClientState(),
GetCmdQueryPacketCommitment(),
GetCmdQueryPacketCommitments(),
GetCmdQueryUnrelayedPackets(),
GetCmdQueryUnreceivedPackets(),
GetCmdQueryUnrelayedAcks(),
GetCmdQueryNextSequenceReceive(),
// TODO: next sequence Send ?
)

View File

@ -16,8 +16,7 @@ import (
)
const (
flagSequences = "sequences"
flagAcknowledgements = "acknowledgements"
flagSequences = "sequences"
)
// GetCmdQueryChannels defines the command to query all the channels ends
@ -253,20 +252,18 @@ func GetCmdQueryPacketCommitment() *cobra.Command {
return cmd
}
// GetCmdQueryUnrelayedPackets defines the command to query all the unrelayed
// packets for either packet commitments or acknowledgements.
func GetCmdQueryUnrelayedPackets() *cobra.Command {
// GetCmdQueryUnreceivedPackets defines the command to query all the unreceived
// packets on the receiving chain
func GetCmdQueryUnreceivedPackets() *cobra.Command {
cmd := &cobra.Command{
Use: "unrelayed-packets [port-id] [channel-id]",
Short: "Query all the unrelayed packets associated with a channel",
Long: `Determine if a packet, given a list of packet commitment sequences, is unrelayed.
Use: "unreceived-packets [port-id] [channel-id]",
Short: "Query all the unreceived packets associated with a channel",
Long: `Determine if a packet, given a list of packet commitment sequences, is unreceived.
If the '-acknowledgements' flag is false (default) then the return value represents:
- Unrelayed packet commitments: no acknowledgement exists for the given packet commitment sequence.
Otherwise, the return value represents:
- Unrelayed packet acknowledgements: an acknowledgement exists for the given packet commitment sequence.`,
Example: fmt.Sprintf("%s query %s %s unrelayed-packets [port-id] [channel-id] --sequences=1,2,3 --acknowledgements=false", version.AppName, host.ModuleName, types.SubModuleName),
The return value represents:
- Unreceived packet commitments: no acknowledgement exists on receiving chain for the given packet commitment sequence on sending chain.
`,
Example: fmt.Sprintf("%s query %s %s unreceived-packets [port-id] [channel-id] --sequences=1,2,3", version.AppName, host.ModuleName, types.SubModuleName),
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx := client.GetClientContextFromCmd(cmd)
@ -281,24 +278,69 @@ Otherwise, the return value represents:
return err
}
acknowledgements, err := cmd.Flags().GetBool(flagAcknowledgements)
if err != nil {
return err
}
seqs := make([]uint64, len(seqSlice))
for i := range seqSlice {
seqs[i] = uint64(seqSlice[i])
}
req := &types.QueryUnrelayedPacketsRequest{
req := &types.QueryUnreceivedPacketsRequest{
PortId: args[0],
ChannelId: args[1],
PacketCommitmentSequences: seqs,
Acknowledgements: acknowledgements,
}
res, err := queryClient.UnrelayedPackets(context.Background(), req)
res, err := queryClient.UnreceivedPackets(context.Background(), req)
if err != nil {
return err
}
return clientCtx.PrintOutput(res)
},
}
cmd.Flags().Int64Slice(flagSequences, []int64{}, "comma separated list of packet sequence numbers")
flags.AddQueryFlagsToCmd(cmd)
return cmd
}
// GetCmdQueryUnrelayedAcks defines the command to query all the unrelayed acks on the original sending chain
func GetCmdQueryUnrelayedAcks() *cobra.Command {
cmd := &cobra.Command{
Use: "unrelayed-acks [port-id] [channel-id]",
Short: "Query all the unrelayed acks associated with a channel",
Long: `Given a list of packet commitment sequences from counterparty, determine if an ack on executing chain has not been relayed to counterparty.
The return value represents:
- Unrelayed packet acknowledgement: packet commitment exists on original sending chain and ack exists on receiving (executing) chain.
`,
Example: fmt.Sprintf("%s query %s %s unrelayed-acks [port-id] [channel-id] --sequences=1,2,3", version.AppName, host.ModuleName, types.SubModuleName),
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx := client.GetClientContextFromCmd(cmd)
clientCtx, err := client.ReadQueryCommandFlags(clientCtx, cmd.Flags())
if err != nil {
return err
}
queryClient := types.NewQueryClient(clientCtx)
seqSlice, err := cmd.Flags().GetInt64Slice(flagSequences)
if err != nil {
return err
}
seqs := make([]uint64, len(seqSlice))
for i := range seqSlice {
seqs[i] = uint64(seqSlice[i])
}
req := &types.QueryUnrelayedAcksRequest{
PortId: args[0],
ChannelId: args[1],
PacketCommitmentSequences: seqs,
}
res, err := queryClient.UnrelayedAcks(context.Background(), req)
if err != nil {
return err
}
@ -308,7 +350,6 @@ Otherwise, the return value represents:
}
cmd.Flags().Int64Slice(flagSequences, []int64{}, "comma separated list of packet sequence numbers")
cmd.Flags().Bool(flagAcknowledgements, false, "boolean indicating if unrelayed acknowledgements (true) or unrelayed packet commitments (false) are returned.")
flags.AddQueryFlagsToCmd(cmd)
return cmd

View File

@ -309,17 +309,75 @@ func (q Keeper) PacketAcknowledgement(c context.Context, req *types.QueryPacketA
return types.NewQueryPacketAcknowledgementResponse(req.PortId, req.ChannelId, req.Sequence, acknowledgementBz, nil, selfHeight), nil
}
// UnrelayedPackets implements the Query/UnrelayedPackets gRPC method. Given
// UnreceivedPackets implements the Query/UnreceivedPackets gRPC method. Given
// a list of counterparty packet commitments, the querier checks if the packet
// sequence has an acknowledgement stored. If req.Acknowledgements is true then
// all unrelayed acknowledgements are returned (ack exists), otherwise all
// unrelayed packet commitments are returned (ack does not exist).
// has already been received by checking if an acknowledgement exists on this
// chain for the packet sequence. All packets that haven't been received yet
// are returned in the response
// Usage: To use this method correctly, first query all packet commitments on
// the sending chain using the Query/PacketCommitments gRPC method.
// Then input the returned sequences into the QueryUnreceivedPacketsRequest
// and send the request to this Query/UnreceivedPackets on the **receiving**
// chain. This gRPC method will then return the list of packet sequences that
// are yet to be received on the receiving chain.
//
// NOTE: The querier makes the assumption that the provided list of packet
// commitments is correct and will not function properly if the list
// is not up to date. Ideally the query height should equal the latest height
// on the counterparty's client which represents this chain.
func (q Keeper) UnrelayedPackets(c context.Context, req *types.QueryUnrelayedPacketsRequest) (*types.QueryUnrelayedPacketsResponse, error) {
// TODO: Replace GetPacketAcknowledgement with GetPacketReceipt once async
// acknowledgements issue is implemented.
// Issue #7254: https://github.com/cosmos/cosmos-sdk/issues/7254
func (q Keeper) UnreceivedPackets(c context.Context, req *types.QueryUnreceivedPacketsRequest) (*types.QueryUnreceivedPacketsResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
if err := validategRPCRequest(req.PortId, req.ChannelId); err != nil {
return nil, err
}
ctx := sdk.UnwrapSDKContext(c)
var unreceivedSequences = []uint64{}
for i, seq := range req.PacketCommitmentSequences {
if seq == 0 {
return nil, status.Errorf(codes.InvalidArgument, "packet sequence %d cannot be 0", i)
}
// if acknowledgement exists on the receiving chain, then packet has already been received
if _, found := q.GetPacketAcknowledgement(ctx, req.PortId, req.ChannelId, seq); !found {
unreceivedSequences = append(unreceivedSequences, seq)
}
}
selfHeight := clienttypes.GetSelfHeight(ctx)
return &types.QueryUnreceivedPacketsResponse{
Sequences: unreceivedSequences,
Height: selfHeight,
}, nil
}
// UnrelayedAcks implements the Query/UnrelayedAcks gRPC method. Given
// a list of counterparty packet acknowledgements, the querier checks if the packet
// has already been received by checking if the packet commitment still exists on this
// chain (original sender) for the packet sequence.
// All acknowledgmeents that haven't been received yet are returned in the response.
// Usage: To use this method correctly, first query all packet commitments on
// the sending chain using the Query/PacketCommitments gRPC method.
// Then input the returned sequences into the QueryUnrelayedPacketsRequest
// and send the request to this Query/UnrelayedPackets on the **receiving**
// chain. This gRPC method will then return the list of packet sequences whose
// acknowledgements are already written on the receiving chain but haven't yet
// been relayed back to the sending chain.
//
// NOTE: The querier makes the assumption that the provided list of packet
// acknowledgements is correct and will not function properly if the list
// is not up to date. Ideally the query height should equal the latest height
// on the counterparty's client which represents this chain.
func (q Keeper) UnrelayedAcks(c context.Context, req *types.QueryUnrelayedAcksRequest) (*types.QueryUnrelayedAcksResponse, error) {
if req == nil {
return nil, status.Error(codes.InvalidArgument, "empty request")
}
@ -337,16 +395,16 @@ func (q Keeper) UnrelayedPackets(c context.Context, req *types.QueryUnrelayedPac
return nil, status.Errorf(codes.InvalidArgument, "packet sequence %d cannot be 0", i)
}
// if req.Acknowledgements is true append sequences with an existing acknowledgement
// otherwise append sequences without an existing acknowledgement.
if _, found := q.GetPacketAcknowledgement(ctx, req.PortId, req.ChannelId, seq); found == req.Acknowledgements {
// if packet commitment still exists on the original sending chain, then packet ack has not been received
// since processing the ack will delete the packet commitment
if _, found := q.GetPacketAcknowledgement(ctx, req.PortId, req.ChannelId, seq); found {
unrelayedSequences = append(unrelayedSequences, seq)
}
}
selfHeight := clienttypes.GetSelfHeight(ctx)
return &types.QueryUnrelayedPacketsResponse{
return &types.QueryUnrelayedAcksResponse{
Sequences: unrelayedSequences,
Height: selfHeight,
}, nil

View File

@ -835,9 +835,9 @@ func (suite *KeeperTestSuite) TestQueryPacketAcknowledgement() {
}
}
func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
func (suite *KeeperTestSuite) TestQueryUnreceivedPackets() {
var (
req *types.QueryUnrelayedPacketsRequest
req *types.QueryUnreceivedPacketsRequest
expSeq = []uint64{}
)
@ -856,7 +856,7 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
{
"invalid port ID",
func() {
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: "",
ChannelId: "test-channel-id",
}
@ -866,7 +866,7 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
{
"invalid channel ID",
func() {
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: "test-port-id",
ChannelId: "",
}
@ -876,7 +876,7 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
{
"invalid seq",
func() {
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: "test-port-id",
ChannelId: "test-channel-id",
PacketCommitmentSequences: []uint64{0},
@ -892,11 +892,10 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
// no ack exists
expSeq = []uint64{1}
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
Acknowledgements: false,
}
},
true,
@ -911,47 +910,10 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
suite.chainA.App.IBCKeeper.ChannelKeeper.SetPacketAcknowledgement(suite.chainA.GetContext(), channelA.PortID, channelA.ID, 1, ack.Hash)
expSeq = []uint64{}
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
Acknowledgements: false,
}
},
true,
},
{
"basic success unrelayed acknowledgements",
func() {
_, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED)
// ack exists
ack := types.NewPacketAckCommitment(channelA.PortID, channelA.ID, 1, []byte("hash"))
suite.chainA.App.IBCKeeper.ChannelKeeper.SetPacketAcknowledgement(suite.chainA.GetContext(), channelA.PortID, channelA.ID, 1, ack.Hash)
expSeq = []uint64{1}
req = &types.QueryUnrelayedPacketsRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
Acknowledgements: true,
}
},
true,
},
{
"basic success unrelayed acknowledgements, nothing to relay",
func() {
_, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED)
// no ack exists
expSeq = []uint64{}
req = &types.QueryUnrelayedPacketsRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
Acknowledgements: true,
}
},
true,
@ -975,17 +937,121 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
}
}
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnreceivedPacketsRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: packetCommitments,
Acknowledgements: false,
}
},
true,
},
}
for _, tc := range testCases {
suite.Run(fmt.Sprintf("Case %s", tc.msg), func() {
suite.SetupTest() // reset
tc.malleate()
ctx := sdk.WrapSDKContext(suite.chainA.GetContext())
res, err := suite.chainA.QueryServer.UnreceivedPackets(ctx, req)
if tc.expPass {
suite.Require().NoError(err)
suite.Require().NotNil(res)
suite.Require().Equal(expSeq, res.Sequences)
} else {
suite.Require().Error(err)
}
})
}
}
func (suite *KeeperTestSuite) TestQueryUnrelayedAcks() {
var (
req *types.QueryUnrelayedAcksRequest
expSeq = []uint64{}
)
testCases := []struct {
msg string
malleate func()
expPass bool
}{
{
"empty request",
func() {
req = nil
},
false,
},
{
"invalid port ID",
func() {
req = &types.QueryUnrelayedAcksRequest{
PortId: "",
ChannelId: "test-channel-id",
}
},
false,
},
{
"invalid channel ID",
func() {
req = &types.QueryUnrelayedAcksRequest{
PortId: "test-port-id",
ChannelId: "",
}
},
false,
},
{
"invalid seq",
func() {
req = &types.QueryUnrelayedAcksRequest{
PortId: "test-port-id",
ChannelId: "test-channel-id",
PacketCommitmentSequences: []uint64{0},
}
},
false,
},
{
"basic success unrelayed packet acks",
func() {
_, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED)
// ack exists
ack := types.NewPacketAckCommitment(channelA.PortID, channelA.ID, 1, []byte("hash"))
suite.chainA.App.IBCKeeper.ChannelKeeper.SetPacketAcknowledgement(suite.chainA.GetContext(), channelA.PortID, channelA.ID, 1, ack.Hash)
expSeq = []uint64{1}
req = &types.QueryUnrelayedAcksRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
}
},
true,
},
{
"success multiple unrelayed acknowledgements",
"basic success unrelayed packet acknowledgements, nothing to relay",
func() {
_, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED)
// no ack exists
expSeq = []uint64{}
req = &types.QueryUnrelayedAcksRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: []uint64{1},
}
},
true,
},
{
"success multiple unrelayed packet acknowledgements",
func() {
_, _, _, _, channelA, _ := suite.coordinator.Setup(suite.chainA, suite.chainB, types.UNORDERED)
expSeq = []uint64{} // reset
@ -1002,11 +1068,10 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
}
}
req = &types.QueryUnrelayedPacketsRequest{
req = &types.QueryUnrelayedAcksRequest{
PortId: channelA.PortID,
ChannelId: channelA.ID,
PacketCommitmentSequences: packetCommitments,
Acknowledgements: true,
}
},
true,
@ -1020,7 +1085,7 @@ func (suite *KeeperTestSuite) TestQueryUnrelayedPackets() {
tc.malleate()
ctx := sdk.WrapSDKContext(suite.chainA.GetContext())
res, err := suite.chainA.QueryServer.UnrelayedPackets(ctx, req)
res, err := suite.chainA.QueryServer.UnrelayedAcks(ctx, req)
if tc.expPass {
suite.Require().NoError(err)

File diff suppressed because it is too large Load Diff

View File

@ -701,8 +701,8 @@ func local_request_Query_PacketAcknowledgement_0(ctx context.Context, marshaler
}
func request_Query_UnrelayedPackets_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnrelayedPacketsRequest
func request_Query_UnreceivedPackets_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnreceivedPacketsRequest
var metadata runtime.ServerMetadata
var (
@ -745,24 +745,13 @@ func request_Query_UnrelayedPackets_0(ctx context.Context, marshaler runtime.Mar
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "packet_commitment_sequences", err)
}
val, ok = pathParams["acknowledgements"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "acknowledgements")
}
protoReq.Acknowledgements, err = runtime.Bool(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "acknowledgements", err)
}
msg, err := client.UnrelayedPackets(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
msg, err := client.UnreceivedPackets(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_UnrelayedPackets_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnrelayedPacketsRequest
func local_request_Query_UnreceivedPackets_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnreceivedPacketsRequest
var metadata runtime.ServerMetadata
var (
@ -805,18 +794,105 @@ func local_request_Query_UnrelayedPackets_0(ctx context.Context, marshaler runti
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "packet_commitment_sequences", err)
}
val, ok = pathParams["acknowledgements"]
msg, err := server.UnreceivedPackets(ctx, &protoReq)
return msg, metadata, err
}
func request_Query_UnrelayedAcks_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnrelayedAcksRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["channel_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "acknowledgements")
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "channel_id")
}
protoReq.Acknowledgements, err = runtime.Bool(val)
protoReq.ChannelId, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "acknowledgements", err)
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "channel_id", err)
}
msg, err := server.UnrelayedPackets(ctx, &protoReq)
val, ok = pathParams["port_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "port_id")
}
protoReq.PortId, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "port_id", err)
}
val, ok = pathParams["packet_commitment_sequences"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "packet_commitment_sequences")
}
protoReq.PacketCommitmentSequences, err = runtime.Uint64Slice(val, ",")
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "packet_commitment_sequences", err)
}
msg, err := client.UnrelayedAcks(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Query_UnrelayedAcks_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq QueryUnrelayedAcksRequest
var metadata runtime.ServerMetadata
var (
val string
ok bool
err error
_ = err
)
val, ok = pathParams["channel_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "channel_id")
}
protoReq.ChannelId, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "channel_id", err)
}
val, ok = pathParams["port_id"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "port_id")
}
protoReq.PortId, err = runtime.String(val)
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "port_id", err)
}
val, ok = pathParams["packet_commitment_sequences"]
if !ok {
return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "packet_commitment_sequences")
}
protoReq.PacketCommitmentSequences, err = runtime.Uint64Slice(val, ",")
if err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "packet_commitment_sequences", err)
}
msg, err := server.UnrelayedAcks(ctx, &protoReq)
return msg, metadata, err
}
@ -1063,7 +1139,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
})
mux.Handle("GET", pattern_Query_UnrelayedPackets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
mux.Handle("GET", pattern_Query_UnreceivedPackets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1072,14 +1148,34 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_UnrelayedPackets_0(rctx, inboundMarshaler, server, req, pathParams)
resp, md, err := local_request_Query_UnreceivedPackets_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_UnrelayedPackets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
forward_Query_UnreceivedPackets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_UnrelayedAcks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := local_request_Query_UnrelayedAcks_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_UnrelayedAcks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@ -1304,7 +1400,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
})
mux.Handle("GET", pattern_Query_UnrelayedPackets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
mux.Handle("GET", pattern_Query_UnreceivedPackets_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
@ -1313,14 +1409,34 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_UnrelayedPackets_0(rctx, inboundMarshaler, client, req, pathParams)
resp, md, err := request_Query_UnreceivedPackets_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_UnrelayedPackets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
forward_Query_UnreceivedPackets_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
mux.Handle("GET", pattern_Query_UnrelayedAcks_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(req.Context())
defer cancel()
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
resp, md, err := request_Query_UnrelayedAcks_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Query_UnrelayedAcks_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@ -1364,7 +1480,9 @@ var (
pattern_Query_PacketAcknowledgement_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8}, []string{"ibc", "channel", "v1beta1", "channels", "channel_id", "ports", "port_id", "packet_acks", "sequence"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Query_UnrelayedPackets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9, 1, 0, 4, 1, 5, 10, 2, 11}, []string{"ibc", "channel", "v1beta1", "channels", "channel_id", "ports", "port_id", "packet_commitments", "packet_commitment_sequences", "packet_acks", "acknowledgements", "unrelayed_packets"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Query_UnreceivedPackets_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"ibc", "channel", "v1beta1", "channels", "channel_id", "ports", "port_id", "packet_commitments", "packet_commitment_sequences", "unreceived_packets"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Query_UnrelayedAcks_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7, 1, 0, 4, 1, 5, 8, 2, 9}, []string{"ibc", "channel", "v1beta1", "channels", "channel_id", "ports", "port_id", "packet_commitments", "packet_commitment_sequences", "unrelayed_acks"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Query_NextSequenceReceive_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6, 2, 7}, []string{"ibc", "channel", "v1beta1", "channels", "channel_id", "ports", "port_id", "next_sequence"}, "", runtime.AssumeColonVerbOpt(true)))
)
@ -1386,7 +1504,9 @@ var (
forward_Query_PacketAcknowledgement_0 = runtime.ForwardResponseMessage
forward_Query_UnrelayedPackets_0 = runtime.ForwardResponseMessage
forward_Query_UnreceivedPackets_0 = runtime.ForwardResponseMessage
forward_Query_UnrelayedAcks_0 = runtime.ForwardResponseMessage
forward_Query_NextSequenceReceive_0 = runtime.ForwardResponseMessage
)

View File

@ -93,9 +93,14 @@ func (q Keeper) PacketAcknowledgement(c context.Context, req *channeltypes.Query
return q.ChannelKeeper.PacketAcknowledgement(c, req)
}
// UnrelayedPackets implements the IBC QueryServer interface
func (q Keeper) UnrelayedPackets(c context.Context, req *channeltypes.QueryUnrelayedPacketsRequest) (*channeltypes.QueryUnrelayedPacketsResponse, error) {
return q.ChannelKeeper.UnrelayedPackets(c, req)
// UnreceivedPackets implements the IBC QueryServer interface
func (q Keeper) UnreceivedPackets(c context.Context, req *channeltypes.QueryUnreceivedPacketsRequest) (*channeltypes.QueryUnreceivedPacketsResponse, error) {
return q.ChannelKeeper.UnreceivedPackets(c, req)
}
// UnrelayedAcks implements the IBC QueryServer interface
func (q Keeper) UnrelayedAcks(c context.Context, req *channeltypes.QueryUnrelayedAcksRequest) (*channeltypes.QueryUnrelayedAcksResponse, error) {
return q.ChannelKeeper.UnrelayedAcks(c, req)
}
// NextSequenceReceive implements the IBC QueryServer interface

File diff suppressed because it is too large Load Diff