Handler 注册与规划

§4 gRPC 总览 · grpc/07 · H2 7.x

13 RPC Handler 实现状态的单一维护点(⏳ / ❌)。契约见 rpcs/02 服务概述 · 接线见 05 Bridge 集成

7.1 Handler 对照表

RPC

规划类名

流模式

状态

SendNavigationCommand

SendNavigationHandler

Unary→Stream

⏳ 已注册,OnRequest

SendExplorationCommand

SendExplorationHandler

Unary→Stream

⏳ 已注册,业务空

SendFollowCommand

SendFollowHandler

Unary→Stream

SendTeleopCommand

SendTeleopHandler

Bidi

⏳ goal + feedback Autolink;终态 REJECTED/TIMEOUT 回写流

SendDockCommand

SendDockHandler

Unary→Stream

SendMapCommand

SendMapHandler

Unary→Stream

ReceiveBotStates

ReceiveBotStatesHandler

Empty→Stream

ReceiveBotEvents

ReceiveBotEventsHandler

Empty→Stream

GetRobotSnapshot

GetRobotSnapshotHandler

Unary

GetActiveTask

GetActiveTaskHandler

Unary

GetCapabilities

GetCapabilitiesHandler

Unary

EmergencyStop

EmergencyStopHandler

Unary

CancelAllTasks

CancelAllTasksHandler

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:

  1. 校验 headercmd_id 去重、timestamp 窗口、nonce

  2. 首帧 Send()ack.success=truefinal=false

  3. 进度帧:同一 cmd_idfinal=false

  4. 末帧:ack.final=true,再 Finish(OK)

Teleop Bidi:OnRequest 处理速度流;watchdog_timeout_sec 超时发 TELEOP_CMD_STOP

7.4 gRPC 状态码

§4.4CommandAck.error_codeCommsgs error_code)一致:

场景

OK

正常结束

INVALID_ARGUMENT

枚举非法、缺少 goals / header

FAILED_PRECONDITION

FSM 不允许、任务互斥

NOT_FOUND

无活跃会话

UNAVAILABLE

Navigator 未就绪


导航← 06 上游参考 · §4 gRPC 总览 →