Handler 注册与规划
§4 gRPC 总览 · grpc/07 · H2 7.x。
13 RPC Handler 实现状态的单一维护点(⏳ / ❌)。契约见 rpcs/02 服务概述 · 接线见 05 Bridge 集成。
7.1 Handler 对照表
RPC |
规划类名 |
流模式 |
状态 |
|---|---|---|---|
|
|
Unary→Stream |
⏳ 已注册, |
|
|
Unary→Stream |
⏳ 已注册,业务空 |
|
|
Unary→Stream |
❌ |
|
|
Bidi |
❌ |
|
|
Unary→Stream |
❌ |
|
|
Unary→Stream |
❌ |
|
|
Empty→Stream |
❌ |
|
|
Empty→Stream |
❌ |
|
|
Unary |
❌ |
|
|
Unary |
❌ |
|
|
Unary |
❌ |
|
|
Unary |
❌ |
|
|
Unary |
❌ |
7.2 Push Handler 签名
DEFINE_HANDLER_SIGNATURE(
BotStatesSignature,
google::protobuf::Empty,
autonomy::common::async_grpc::Stream<
autonomy::commsgs::proto::vehicle_msgs::RobotState>,
"/autonomy.bridge.proto.AutonomyService/ReceiveBotStates")
7.3 FSM 与 Stream 约定
CommandFsm / NavigatorMuxer 保证任务互斥;EmergencyStop 可抢占任意任务。时序见 rpcs/03 §3.5。
Command Handler:
校验
header(cmd_id去重、timestamp窗口、nonce)首帧
Send():ack.success=true,final=false进度帧:同一
cmd_id,final=false末帧:
ack.final=true,再Finish(OK)
Teleop Bidi:OnRequest 处理速度流;watchdog_timeout_sec 超时发 TELEOP_CMD_STOP。
7.4 gRPC 状态码
与 §4.4 及 CommandAck.error_code(Commsgs error_code)一致:
码 |
场景 |
|---|---|
|
正常结束 |
|
枚举非法、缺少 |
|
FSM 不允许、任务互斥 |
|
无活跃会话 |
|
Navigator 未就绪 |
导航:← 06 上游参考 · §4 gRPC 总览 →