4. gRPC 插件
gRPC 插件(plugins/grpc/)是 Bridge 当前唯一可用的传输实现,基于 autonomy/common/async_grpc 将 §3 RPC 落地为异步服务端。
编号约定:本页 §4.1–§4.6 为插件总览;
grpc/01_*–06_*为 async_grpc 专题(子页 H2 为{文件前缀}.x,如02→## 2.1)。文档地图见 00_guide §0.1。
4.1 组件
路径 |
职责 |
|---|---|
|
|
|
|
|
|
|
Navigator 客户端(待实现) |
|
|
4.2 服务器构建
Server::Builder b;
b.SetServerAddress("127.0.0.1"); // 待读 GrpcOptions,缺 port
b.SetNumGrpcThreads(4);
b.SetNumEventThreads(4);
b.RegisterHandler<SendNavigationHandler>();
b.RegisterHandler<SendExplorationHandler>();
grpc_server_ = b.Build(); // → Start() → Shutdown()
Builder 方法 |
Proto 字段 |
现状 |
|---|---|---|
|
|
硬编码,缺 port |
|
|
硬编码 4 |
|
|
硬编码 4 |
接线缺口与目标形态:grpc/05 §5.7 · Handler 状态:grpc/07 §7.1。
4.3 Handler
RPC 字段见 rpcs/07 导航 等专题。流程:OnRequest → 多次 Send() → Finish();跨线程写 Stream 用 GetWriter()。
新增 RPC:proto → DEFINE_HANDLER_SIGNATURE → RpcHandler → RegisterHandler(详见 grpc/04 Handler API)。
4.4 状态码与调优
gRPC Status |
场景 |
|---|---|
|
正常 / 参数非法 / FSM 不允许 |
|
Navigator 未就绪 / 超时 |
建议:num_event_threads ≥ num_grpc_threads;大载荷调高 max_send_message_size。详见 grpc/07 §7.4 · grpc/02 §2.7。
4.6 async_grpc 专题
文件 |
内容 |
|---|---|
框架定位、类图、Bridge 实例化 |
|
CQ / EQ 双队列、线程模型 |
|
Rpc 状态机、四种 RPC 类型 |
|
Handler API、ExecutionContext |
|
源码接线、配置映射 |
|
cartographer async_grpc 上游 |
导航:← §3 RPC · grpc/ 专题 → · §5 MQTT →