aboutsummaryrefslogtreecommitdiff
path: root/src/nimpb/nimpb.nim
diff options
context:
space:
mode:
Diffstat (limited to 'src/nimpb/nimpb.nim')
-rw-r--r--src/nimpb/nimpb.nim14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/nimpb/nimpb.nim b/src/nimpb/nimpb.nim
index ea7cedd..4363c7d 100644
--- a/src/nimpb/nimpb.nim
+++ b/src/nimpb/nimpb.nim
@@ -589,3 +589,17 @@ proc writeUnknownFields*(stream: ProtobufStream, fields: seq[UnknownField]) =
proc discardUnknownFields*[T](message: T) =
message.unknownFields = @[]
+
+proc sizeOfUnknownField*(field: UnknownField): uint64 =
+ result = sizeOfTag(field.fieldNumber, field.wiretype)
+ case field.wiretype
+ of WireType.Varint:
+ result = result + sizeOfVarint(field.vint)
+ of WireType.Fixed64:
+ result = result + 8
+ of WireType.Fixed32:
+ result = result + 4
+ of WireType.LengthDelimited:
+ result = result + sizeOfLengthDelimited(uint64(len(field.data)))
+ else:
+ raise newException(Exception, "unsupported wiretype: " & $field.wiretype)