pw_rpc: Handle client streams in the server

- Handle client stream messages in the RPC server. Client streaming RPCs
  cannot yet be created.
- Add callbacks for errors, client stream messages, and client stream
  completion.
- Rename Responder's Finish to CloseAndSendStatus to avoid overlapping
  Reader/Writer implementations' Finish() methods.
- Move Nanopb ServerWrite::Write to the .cc file.

Change-Id: Ie4894e6b2fd47a6fc7efdfba58ebeaddff9002e0
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/50362
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
17 files changed
tree: c38971c02a0cd9ffd61547ef8ec03485d84964eb
  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_armv7m/
  14. pw_build/
  15. pw_bytes/
  16. pw_checksum/
  17. pw_chrono/
  18. pw_chrono_embos/
  19. pw_chrono_freertos/
  20. pw_chrono_stl/
  21. pw_chrono_threadx/
  22. pw_cli/
  23. pw_console/
  24. pw_containers/
  25. pw_cpu_exception/
  26. pw_cpu_exception_cortex_m/
  27. pw_docgen/
  28. pw_doctor/
  29. pw_env_setup/
  30. pw_function/
  31. pw_fuzzer/
  32. pw_hdlc/
  33. pw_hex_dump/
  34. pw_i2c/
  35. pw_interrupt/
  36. pw_interrupt_cortex_m/
  37. pw_kvs/
  38. pw_libc/
  39. pw_log/
  40. pw_log_basic/
  41. pw_log_multisink/
  42. pw_log_null/
  43. pw_log_rpc/
  44. pw_log_sink/
  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_mbedtls/
  89. pw_tokenizer/
  90. pw_tool/
  91. pw_toolchain/
  92. pw_trace/
  93. pw_trace_tokenized/
  94. pw_transfer/
  95. pw_unit_test/
  96. pw_varint/
  97. pw_watch/
  98. pw_web_ui/
  99. targets/
  100. third_party/
  101. .bazelignore
  102. .bazelrc
  103. .clang-format
  104. .eslintrc.json
  105. .gitattributes
  106. .gitignore
  107. .gn
  108. .prettierrc.js
  109. .pylintrc
  110. activate.bat
  111. AUTHORS
  112. bootstrap.bat
  113. bootstrap.sh
  114. BUILD
  115. BUILD.gn
  116. BUILDCONFIG.gn
  117. CMakeLists.txt
  118. LICENSE
  119. modules.gni
  120. OWNERS
  121. package.json
  122. PW_PLUGINS
  123. README.md
  124. tsconfig.json
  125. WORKSPACE
  126. yarn.lock
README.md

See our website: http://pigweed.dev