pw_rpc: Improve Java client error message for missing parser() method

pw_rpc services currently store the class objects for generated
protobuf. Their parser() method is called using reflection to get an
object for parsing requests or responses. This fails in two situations:

- The class is not actually a generated protobuf class.
- The parser() method was optimized out (b/293361955).

This change improves the error message when calling parser(), adding a
reference to b/293361955. It also makes the class objects package
private to simplify transitioning to storing parsers in the future.

Change-Id: If69665028f088d79271aebf290a64f25db5a0784
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/159471
Reviewed-by: Carlos Chinchilla <cachinchilla@google.com>
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
2 files changed
tree: 60ee754896e599f1754e1afbb2eb59a584649b6a
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. pw_alignment/
  7. pw_allocator/
  8. pw_analog/
  9. pw_android_toolchain/
  10. pw_arduino_build/
  11. pw_assert/
  12. pw_assert_basic/
  13. pw_assert_log/
  14. pw_assert_tokenized/
  15. pw_assert_zephyr/
  16. pw_async/
  17. pw_async_basic/
  18. pw_base64/
  19. pw_bloat/
  20. pw_blob_store/
  21. pw_bluetooth/
  22. pw_bluetooth_hci/
  23. pw_bluetooth_profiles/
  24. pw_boot/
  25. pw_boot_cortex_m/
  26. pw_build/
  27. pw_build_info/
  28. pw_build_mcuxpresso/
  29. pw_bytes/
  30. pw_checksum/
  31. pw_chrono/
  32. pw_chrono_embos/
  33. pw_chrono_freertos/
  34. pw_chrono_stl/
  35. pw_chrono_threadx/
  36. pw_chrono_zephyr/
  37. pw_cli/
  38. pw_compilation_testing/
  39. pw_console/
  40. pw_containers/
  41. pw_cpu_exception/
  42. pw_cpu_exception_cortex_m/
  43. pw_crypto/
  44. pw_digital_io/
  45. pw_digital_io_mcuxpresso/
  46. pw_docgen/
  47. pw_doctor/
  48. pw_env_setup/
  49. pw_file/
  50. pw_function/
  51. pw_fuzzer/
  52. pw_hdlc/
  53. pw_hex_dump/
  54. pw_i2c/
  55. pw_i2c_linux/
  56. pw_i2c_mcuxpresso/
  57. pw_ide/
  58. pw_interrupt/
  59. pw_interrupt_cortex_m/
  60. pw_interrupt_xtensa/
  61. pw_interrupt_zephyr/
  62. pw_intrusive_ptr/
  63. pw_kvs/
  64. pw_libc/
  65. pw_log/
  66. pw_log_android/
  67. pw_log_basic/
  68. pw_log_null/
  69. pw_log_rpc/
  70. pw_log_string/
  71. pw_log_tokenized/
  72. pw_log_zephyr/
  73. pw_malloc/
  74. pw_malloc_freelist/
  75. pw_metric/
  76. pw_minimal_cpp_stdlib/
  77. pw_module/
  78. pw_multisink/
  79. pw_package/
  80. pw_perf_test/
  81. pw_persistent_ram/
  82. pw_polyfill/
  83. pw_preprocessor/
  84. pw_presubmit/
  85. pw_protobuf/
  86. pw_protobuf_compiler/
  87. pw_random/
  88. pw_result/
  89. pw_ring_buffer/
  90. pw_router/
  91. pw_rpc/
  92. pw_rpc_transport/
  93. pw_rust/
  94. pw_snapshot/
  95. pw_software_update/
  96. pw_span/
  97. pw_spi/
  98. pw_spi_mcuxpresso/
  99. pw_status/
  100. pw_stm32cube_build/
  101. pw_stream/
  102. pw_stream_uart_linux/
  103. pw_stream_uart_mcuxpresso/
  104. pw_string/
  105. pw_symbolizer/
  106. pw_sync/
  107. pw_sync_baremetal/
  108. pw_sync_embos/
  109. pw_sync_freertos/
  110. pw_sync_stl/
  111. pw_sync_threadx/
  112. pw_sync_zephyr/
  113. pw_sys_io/
  114. pw_sys_io_arduino/
  115. pw_sys_io_baremetal_lm3s6965evb/
  116. pw_sys_io_baremetal_stm32f429/
  117. pw_sys_io_emcraft_sf2/
  118. pw_sys_io_mcuxpresso/
  119. pw_sys_io_pico/
  120. pw_sys_io_stdio/
  121. pw_sys_io_stm32cube/
  122. pw_sys_io_zephyr/
  123. pw_system/
  124. pw_target_runner/
  125. pw_thread/
  126. pw_thread_embos/
  127. pw_thread_freertos/
  128. pw_thread_stl/
  129. pw_thread_threadx/
  130. pw_thread_zephyr/
  131. pw_tls_client/
  132. pw_tls_client_boringssl/
  133. pw_tls_client_mbedtls/
  134. pw_tokenizer/
  135. pw_tool/
  136. pw_toolchain/
  137. pw_trace/
  138. pw_trace_tokenized/
  139. pw_transfer/
  140. pw_unit_test/
  141. pw_unit_test_zephyr/
  142. pw_varint/
  143. pw_watch/
  144. pw_web/
  145. pw_work_queue/
  146. seed/
  147. targets/
  148. third_party/
  149. ts/
  150. zephyr/
  151. .bazelignore
  152. .bazelrc
  153. .black.toml
  154. .clang-format
  155. .clang-tidy
  156. .eslintrc.json
  157. .git-blame-ignore-revs
  158. .gitattributes
  159. .gitignore
  160. .gn
  161. .mypy.ini
  162. .prettierrc.js
  163. .pw_ide.yaml
  164. .pylintrc
  165. activate.bat
  166. Android.bp
  167. AUTHORS
  168. bootstrap.bat
  169. bootstrap.sh
  170. BUILD.bazel
  171. BUILD.gn
  172. BUILDCONFIG.gn
  173. CMakeLists.txt
  174. jest.config.ts
  175. Kconfig.zephyr
  176. LICENSE
  177. modules.gni
  178. OWNERS
  179. package-lock.json
  180. package.json
  181. pigweed.json
  182. PIGWEED_MODULES
  183. README.md
  184. rollup.config.js
  185. tsconfig.json
  186. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links