[roll] Roll fuchsia [fidl][cpp] Start of natural sync calls

Adds fidl::SyncClient and fidl::Call following the sketch in
https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/src/lib/fidl/cpp/docs/structure-of-unified-cpp-fidl-bindings.md#natural-api_synchronous.

We already have two code paths for making a synchronous call, one for
Zircon channel (which requires the caller to provide storage), and
another for driver (whose messages bring along an arena for storage).
Those code paths also automatically decode the message as part of the
call, which doesn't work for natural types with their own decoding
logic.

To not end up with 4 different code paths (whether caller provides
storage X whether decoding is in-place), this CL starts a generalized
storage concept, outlined below:

- OutgoingMessage::Call always takes a MessageStorageViewBase*.
- For a Zircon channel, the caller passes ChannelMessageStorageView,
  which references some buffer span and handle spans.
- For a driver channel, the caller will pass a DriverStorageView,
  which references a |fdf::Arena*| that can hold the received arena
  backing the received message. (To be added in a future CL).
- No more auto-decoding within OutgoingMessage::Call. Both wire types
  and natural types will be symmetrical and each add their own decoding
  logic afterwards.

Because the change cuts across bprosnitz@'s generated code serialization
changes, I did not migrate every existing usage of
OutgoingMessage::Call to the new code path. That will follow once we've
landed the big encoding/decoding changes.

Original-Bug: 60240
Original-Bug: 100472
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/679151
Original-Revision: 6c88f12e63fd786c7b9de7ccc91fedfa84e7087b
GitOrigin-RevId: b74b9910bca4c6665626fb21e23ed1cbb7f3ec9d
Change-Id: Iaf66f7725804f73f7499db734f60bc786965fdd3
1 file changed
tree: 8e26bcb7019bc379058dd3c8f6ca2a49495144f2
  1. infra/
  2. third_party/
  3. cts
  4. firmware
  5. flower
  6. fortune-teller
  7. jiri.lock
  8. minimal
  9. prebuilts
  10. README.md
  11. stem
  12. test_durations
  13. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.