AnDiXL opened a new pull request, #3559: URL: https://github.com/apache/brpc/pull/3559
### What problem does this PR solve? **Depends on #3558. Please keep this PR in draft until the message/codegen prerequisite is merged.** This continues the RPC work in #3197 on top of #3558, the message/codegen follow-up to #3196. Both build on the `SingleIOBuf` foundation merged in #3062. **Review the RPC-only increment:** [four follow-up commits above #3558](https://github.com/AnDiXL/brpc/compare/6e5a3b3248fc10671873497fc56574eb4ef8b5c9...09346865a5fafd844f58d1824296e7ac64f04b62). Since #3558 is still open, GitHub's diff against `master` also includes its two prerequisite commits. This branch starts at the exact #3558 head (`6e5a3b32`); it needs rebasing after that PR merges so the community diff contains only the follow-up changes. The message/codegen work is not being proposed independently a second time. Thanks to @Q1ngbo for the original work and to @Spicy-cream for the continued interest in FlatBuffers and collaboration on [LinQuickDev/brpc#45](https://github.com/LinQuickDev/brpc/pull/45). ### What is changed and the side effects? The four commits beyond #3558 are: - `a30e22bc`: optional `fb_rpc` transport, Channel/Controller/Server integration, service lifecycle handling, attachments, retries and concurrency, with 33 protocol tests. - `e1c76cdc`: generated client/server example with bounded loopback smoke. This is functional validation, not a performance benchmark. - `87d917e3`: explicit FlatBuffers ON validation runner, its self-tests and a six-lane GitHub Actions workflow. - `09346865`: Chinese/English setup, dependency, ABI and example-verification documentation. The transport uses explicit metadata lengths to allow appended optional fields while retaining the known prefix. Existing protobuf-facing `Protocol` callback signatures remain unchanged. Side effects and limits: - FlatBuffers remains disabled by default. Enabling it changes ABI; the library and consumers must use matching build settings. Protobuf remains a dependency. - FRPC authentication, compression, checksums and streaming are not supported. No compatibility with every historical experimental FRPC wire format or performance improvement is claimed. ### Validation Fresh checks for this publication: - The reordered branch has exactly the same Git tree as the complete follow-up previously shared in #3197 (`c641abbc`); no implementation changes were introduced by the reorder. - `git diff --check 6e5a3b32..HEAD` passed. - `python3 .github/scripts/test_flatbuffers_on.py`: 26 tests passed. Historical focused validation records: | Environment | Recorded result | | --- | --- | | macOS CMake, Apple Clang 15 / Protobuf 3.21 | 21 message + 33 protocol tests, two codegen CTests and one example CTest | | Linux CMake, GCC | 21 message + 33 protocol tests, two codegen CTests and one example CTest | | Linux Make and Bazel, GCC | Each ran 21 message + 33 protocol tests | These recorded runs had no failures or skips. The example smoke verified 13 replies, two expected schema rejections and clean shutdown. The 21 message tests belong to the prerequisite, not this RPC increment. Linux Make/Bazel used snapshot v4, while CMake used v6/v6r1. The recorded comparison found changes only in two codegen acceptance files, with 1,919 other files unchanged. These are historical snapshot results, not fresh C++ or Linux test runs of this reordered branch. The new hosted ON matrix has not yet been verified. Linux Clang ON lanes, the hosted macOS Protobuf 29/Abseil combination, full-repository tests, new sanitizer runs and performance benchmarks are not claimed as completed by this follow-up. --- ### Check List: - [x] Dependency on #3558 and the incremental review range are explicit. - [x] Protocol regressions, generated example and enablement documentation are included. - [x] Tree identity, patch formatting and runner self-tests were checked for this publication. - [ ] #3558 has merged and this branch has been rebased onto the updated base. - [ ] Hosted CI for this PR has completed. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
