[roll third_party/pigweed] pw_protobuf: Support decoding from non-seekable Reader

Allowing a StreamDecoder to operate on a non-seekable Reader means that
protobuf messages can be decoded directly from a SocketStream and other
similar streams.

The previous requirement was to support skipping fields, and advancing
to the end of nested length-delimited fields that were not fully read.
Since this use is always forwards, it can be replaced in those streams
by simply reading and discarding the data.

For the requirement of maintaining the bounds of nested length-delimited
fields, the decoder can maintain the position itself as it reads.

StreamDecoder (and StreamDecoder::BytesReader) can still support
seeking where the underlying stream supports it, updating the
tracked position within the bounds of the field.

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

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: 8d7280029d72cb8..a52946355d98485
Roller-URL: https://ci.chromium.org/b/8826931250252149985
Cq-Cl-Tag: roller-builder:pigweed-experimental-roller
Cq-Cl-Tag: roller-bid:8826931250252149985
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I120ea6fe5e998f60d3fdbf6ff95cb34fcb623d68
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/experimental/+/76341
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>
1 file changed
tree: 23d7c68dbbe8f82927e26e90a18421d64833605b
  1. applications/
  2. build_overrides/
  3. pw_board_led/
  4. pw_board_led_arduino/
  5. pw_board_led_host/
  6. pw_board_led_stm32cube/
  7. pw_board_led_stm32f429i_disc1/
  8. pw_spin_delay/
  9. pw_spin_delay_arduino/
  10. pw_spin_delay_host/
  11. pw_spin_delay_stm32cube/
  12. pw_spin_delay_stm32f429i_disc1/
  13. targets/
  14. third_party/
  15. tools/
  16. .gitattributes
  17. .gitignore
  18. .gitmodules
  19. .gn
  20. activate.bat
  21. banner.txt
  22. bootstrap.bat
  23. bootstrap.sh
  24. BUILD.gn
  25. BUILDCONFIG.gn
  26. env_setup.json
  27. navbar.md
  28. OWNERS
  29. PW_PLUGINS
  30. README.md
README.md

Pigweed Experimental

This repository contains experimental pigweed modules.

Repository setup

Clone this repo with --recursive to get all required submodules.

git clone --recursive https://pigweed.googlesource.com/pigweed/experimental

This will pull the Pigweed source repository into third_party/pigweed. If you already cloned but forgot to --recursive run git submodule update --init to pull all submodules.