pw_rpc: Avoid reflection in Java client

The pw_rpc Java client currently requires manual service declarations,
since codegen has not yet been implemented. Previously, service
declarations used protobuf class objects. Later, their parser() methods
were called using reflection.

Relying on reflection is not ideal. It breaks when optimizers like R8
are used, since the parser() method is not actually called anywhere.
This change updates Service declarations to accept protobuf parsers
instead of class objects.

Bug: b/293361955
Change-Id: Idec52db5ba429861c73a3886c9214001a2b264bb
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/162930
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
8 files changed
tree: ce756764e5f906a5738eeff3cd8a336afb9136f9
  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