fix: introduce new field for shards in metadata protocol (#2511)

* fix: repeated fields are packed in proto3
* fix: add new field for shards in metadata protobuffers to avoid breaking change and deprecate original field
This commit is contained in:
richΛrd 2024-03-11 10:08:46 -04:00 committed by GitHub
parent dcc88ee0b2
commit f9f92b7d2f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 20 additions and 6 deletions

View File

@ -23,9 +23,9 @@ proc encode*(rpc: WakuMetadataRequest): ProtoBuffer =
var pb = initProtoBuffer()
pb.write3(1, rpc.clusterId)
for shard in rpc.shards:
pb.write3(2, shard)
pb.write3(2, shard) # deprecated
pb.writePacked(3, rpc.shards)
pb.finish3()
pb
@ -41,7 +41,13 @@ proc decode*(T: type WakuMetadataRequest, buffer: seq[byte]): ProtoResult[T] =
rpc.clusterId = some(clusterId.uint32)
var shards: seq[uint64]
if ?pb.getRepeatedField(2, shards):
if ?pb.getPackedRepeatedField(3, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
elif ?pb.getPackedRepeatedField(2, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
elif ?pb.getRepeatedField(2, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
@ -51,9 +57,9 @@ proc encode*(rpc: WakuMetadataResponse): ProtoBuffer =
var pb = initProtoBuffer()
pb.write3(1, rpc.clusterId)
for shard in rpc.shards:
pb.write3(2, shard)
pb.write3(2, shard) # deprecated
pb.writePacked(3, rpc.shards)
pb.finish3()
pb
@ -69,8 +75,16 @@ proc decode*(T: type WakuMetadataResponse, buffer: seq[byte]): ProtoResult[T] =
rpc.clusterId = some(clusterId.uint32)
var shards: seq[uint64]
if ?pb.getRepeatedField(2, shards):
if ?pb.getPackedRepeatedField(3, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
elif ?pb.getPackedRepeatedField(2, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
elif ?pb.getRepeatedField(2, shards):
for shard in shards:
rpc.shards.add(shard.uint32)
ok(rpc)