pw_rpc: Rework Python RPC client

- Restructure the RPC call object to use a consistent API for all types
  of RPC.
- Support synchronous and asynchronous invocations for all RPC types.
- Switch to gRPC-like callback names: on_next, on_completed, on_error.
  Rename complete() to completed() for consistency.
- Call the on_error callback when an RPC's payload fails to decode.
- Remove the "keep_open" feature, which is obsolete since client
  streaming RPCs are now supported.
- Default to override_pending=True in the callback client.

Change-Id: Ic6a26393acb8b56fcac97fbbe3e633cc5b1b7947
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/54220
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
6 files changed
tree: 8d123409f8bffc47bffc65c2c5e4d564299f77b7
  1. build_overrides/
  2. docker/
  3. docs/
  4. pw_allocator/
  5. pw_analog/
  6. pw_arduino_build/
  7. pw_assert/
  8. pw_assert_basic/
  9. pw_assert_log/
  10. pw_base64/
  11. pw_bloat/
  12. pw_blob_store/
  13. pw_boot/
  14. pw_boot_cortex_m/
  15. pw_build/
  16. pw_bytes/
  17. pw_checksum/
  18. pw_chrono/
  19. pw_chrono_embos/
  20. pw_chrono_freertos/
  21. pw_chrono_stl/
  22. pw_chrono_threadx/
  23. pw_cli/
  24. pw_console/
  25. pw_containers/
  26. pw_cpu_exception/
  27. pw_cpu_exception_cortex_m/
  28. pw_crypto/
  29. pw_docgen/
  30. pw_doctor/
  31. pw_env_setup/
  32. pw_function/
  33. pw_fuzzer/
  34. pw_hdlc/
  35. pw_hex_dump/
  36. pw_i2c/
  37. pw_interrupt/
  38. pw_interrupt_cortex_m/
  39. pw_kvs/
  40. pw_libc/
  41. pw_log/
  42. pw_log_basic/
  43. pw_log_null/
  44. pw_log_rpc/
  45. pw_log_tokenized/
  46. pw_malloc/
  47. pw_malloc_freelist/
  48. pw_metric/
  49. pw_minimal_cpp_stdlib/
  50. pw_module/
  51. pw_multisink/
  52. pw_package/
  53. pw_persistent_ram/
  54. pw_polyfill/
  55. pw_preprocessor/
  56. pw_presubmit/
  57. pw_protobuf/
  58. pw_protobuf_compiler/
  59. pw_random/
  60. pw_result/
  61. pw_ring_buffer/
  62. pw_router/
  63. pw_rpc/
  64. pw_snapshot/
  65. pw_span/
  66. pw_status/
  67. pw_stm32cube_build/
  68. pw_stream/
  69. pw_string/
  70. pw_sync/
  71. pw_sync_baremetal/
  72. pw_sync_embos/
  73. pw_sync_freertos/
  74. pw_sync_stl/
  75. pw_sync_threadx/
  76. pw_sys_io/
  77. pw_sys_io_arduino/
  78. pw_sys_io_baremetal_lm3s6965evb/
  79. pw_sys_io_baremetal_stm32f429/
  80. pw_sys_io_stdio/
  81. pw_target_runner/
  82. pw_thread/
  83. pw_thread_embos/
  84. pw_thread_freertos/
  85. pw_thread_stl/
  86. pw_thread_threadx/
  87. pw_tls_client/
  88. pw_tls_client_boringssl/
  89. pw_tls_client_mbedtls/
  90. pw_tokenizer/
  91. pw_tool/
  92. pw_toolchain/
  93. pw_trace/
  94. pw_trace_tokenized/
  95. pw_transfer/
  96. pw_unit_test/
  97. pw_varint/
  98. pw_watch/
  99. pw_web_ui/
  100. targets/
  101. third_party/
  102. .bazelignore
  103. .bazelrc
  104. .clang-format
  105. .eslintrc.json
  106. .gitattributes
  107. .gitignore
  108. .gn
  109. .prettierrc.js
  110. .pylintrc
  111. activate.bat
  112. AUTHORS
  113. bootstrap.bat
  114. bootstrap.sh
  115. BUILD.bazel
  116. BUILD.gn
  117. BUILDCONFIG.gn
  118. CMakeLists.txt
  119. LICENSE
  120. modules.gni
  121. OWNERS
  122. package.json
  123. PW_PLUGINS
  124. README.md
  125. tsconfig.json
  126. WORKSPACE
  127. yarn.lock
README.md

See our website: http://pigweed.dev