[roll] Roll fuchsia [fidl][rust] Wake up everyone waiting on channel

When there is more than one outstanding query, or if a query and an
event listener is active, the client chose one to signal when the
channel was ready.  This means no other waker will be notified until
that waker repolled, and could lead to deadlocks when for example a
Response future is being held but not polled while another query is
being waited on.

Instead, wake all the tasks waiting for anything on the channel when
new data arrives.

Refactor some of the common code in ClientInner to their component
structs, consolidating code to register and wake tasks.

Test: updated client_always_wakes_pending_futures,
      client_always_wakes_pending_futures_on_epitaph
      fx test fidl_rust_lib_tests

Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/513729
Original-Revision: ba36040f502bb20108d18366da2e70578b2cf286
GitOrigin-RevId: 738e155e7ce79130c5349e4f96b420d4ecacf1c5
Change-Id: I0fa5b54934b2d5d8d2c34476cad397f822e9bfd3
1 file changed
tree: febcf72f84a070e9ccb045296af09a602692e3a0
  1. garnet/
  2. infra/
  3. peridot/
  4. third_party/
  5. topaz/
  6. zircon/
  7. firmware
  8. flower
  9. jiri.lock
  10. minimal
  11. prebuilts
  12. README.md
  13. stem
  14. test_durations
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.