tree dbb5da8b8fe8016ef50b98bf7608e3f700d22dc8
parent e89be5c0598c4c5c3509123ae9e582ec04741f2d
author pigweed-integration-roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com> 1631567668 +0000
committer CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> 1631568738 +0000

[roll third_party/pigweed] pw_protobuf: Add helper for map entry write

Expose low level APIs in pw_protobuf for estimating field size and
writing length-delimited field key and length prefix. Use them to
implement a helper function in pw_software_update for writing proto
map<string, bytes> entries.

Context: UpdateBundle needs to construct the following Manifest
proto message from blob storage:

message Manifest {
  optional SnapshotMetadata snapshot_metadata = 1;
  map<string, TargetsMetadata> targets_metadata = 2;
}

For wire format generation, it is essentially equivalent to the
following definition with a nested `Entry` message.

message Entry {
    string key = 1;
    bytes value = 2;
}

message Manifest {
    optional bytes snapshot_metadata = 1;
    repeated Entry targets_metadata = 2;
}

Although protobuf::StreamEncoder has capability for nested message
encoding, it requires a scratch buffer that shall be at least the
largest sub-message size. In this case, it will be largest
target metadata in the update software bundle, which however, can be
fairly large and difficult to estimate. To avoid the issue, the CL
takes an approach to construct the message from lower level.
Specifically, the CL constructs the delimited field key and length
prefix for `Entry` on its own and write to output, then followed by
writing a regular string field of `key` and bytes field of `value` via
the normal StreamEncoder approach.

Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/59681

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 03e1b265752f327..931f4d54ab96caa
Roller-URL: https://ci.chromium.org/b/8836171133824955345
Cq-Cl-Tag: roller-builder:pigweed-experimental-roller
Cq-Cl-Tag: roller-bid:8836171133824955345
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I6215c3127dd256a065ce48d7aa7255d1f0153065
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/60741
Bot-Commit: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com>
Commit-Queue: Pigweed Integration Roller <pigweed-integration-roller@pigweed.google.com.iam.gserviceaccount.com>
