pw_rpc: Replace existing client calls in RegisterCall

This updates the RPC client to replace (cancel) an existing call when a
new one is started for the same RPC instead of failing. This is
consistent with the Python client and expected user behavior (calling an
RPC with the same context should replace the first).

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

See our website: http://pigweed.dev