文章目录
-
-
- [1. 概述](#1. 概述)
- [2. 回调方法](#2. 回调方法)
- [3. 核心回调详解](#3. 核心回调详解)
-
- [3.1 on_writer_matched](#3.1 on_writer_matched)
- [3.2 on_writer_change_received_by_all](#3.2 on_writer_change_received_by_all)
- [3.3 on_liveliness_lost](#3.3 on_liveliness_lost)
- [4. 与 DDS 层 DataWriterListener 的关系](#4. 与 DDS 层 DataWriterListener 的关系)
- [5. 总结](#5. 总结)
-
1. 概述
WriterListener 是 RTPS Writer 的事件回调接口,用户可以重写这些虚方法来接收 Writer 相关的通知事件。
2. 回调方法
| 方法 | 触发时机 | 用途 |
|---|---|---|
on_writer_matched |
新 Reader 匹配到 Writer | 通知匹配成功 |
on_offered_incompatible_qos |
Reader 请求的 QoS 不兼容 | 通知 QoS 不匹配 |
on_writer_change_received_by_all |
所有匹配的 Reader 都收到数据 | 确认数据已被接收 |
on_liveliness_lost |
Writer 存活信号丢失 | 通知存活状态丢失 |
on_reader_discovery |
Reader 发现信息变化 | 通知 Reader 发现状态变化 |
on_incompatible_type |
类型不兼容 | 通知数据类型不匹配 |
3. 核心回调详解
3.1 on_writer_matched
cpp
virtual void on_writer_matched(
RTPSWriter* writer,
const MatchingInfo& info);
// 触发时机: 新 Reader 与 Writer 匹配成功
// info.status: MATCHED / REMOVED
3.2 on_writer_change_received_by_all
cpp
virtual void on_writer_change_received_by_all(
RTPSWriter* writer,
CacheChange_t* change);
// 触发时机: 所有匹配的 Reader 都确认收到了该数据
// 用于可靠传输时,确认数据已被所有人接收
3.3 on_liveliness_lost
cpp
virtual void on_liveliness_lost(
RTPSWriter* writer,
const LivelinessLostStatus& status);
// 触发时机: Writer 未能及时发送存活证明
// 说明: 用于监控 Writer 是否还活着
4. 与 DDS 层 DataWriterListener 的关系
DDS 层: DataWriterListener
│
│ (封装)
▼
RTPS 层: WriterListener
RTPS WriterListener 是 DDS DataWriterListener 的底层实现
5. 总结
┌────────────────────────────────────────────────────────────────────┐
│ WriterListener 回调总结 │
├────────────────────────────────────────────────────────────────────┤
│ │
│ 事件类型: │
│ • on_writer_matched - 匹配事件 │
│ • on_offered_incompatible_qos - QoS 不兼容 │
│ • on_writer_change_received_by_all - 数据被所有人接收 │
│ • on_liveliness_lost - 存活丢失 │
│ • on_reader_discovery - Reader 发现变化 │
│ • on_incompatible_type - 类型不兼容 │
│ │
│ 用途: │
│ • 监控匹配状态 │
│ • 确认可靠传输 │
│ • 存活监控 │
│ │
└────────────────────────────────────────────────────────────────────┘