fastdds源码分析之WriterListener

文章目录

      • [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 - 类型不兼容                              │
│                                                                     │
│  用途:                                                            │
│  • 监控匹配状态                                                   │
│  • 确认可靠传输                                                  │
│  • 存活监控                                                      │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘
相关推荐
zylyehuo1 天前
Linux 彻底且安全地删除文件
linux
用户805533698032 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297912 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
Web3探索者3 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo3 天前
Linux系统中网线与USB网络共享冲突
linux
Sokach10155 天前
Linux Shell 脚本从零到能用:一个新手的一天学习总结
linux
AlfredZhao5 天前
Docker 容器时区不对,`timedatectl` 不存在怎么办?
linux·timezone
zzzzzz3107 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode7 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
A小辣椒8 天前
TShark:Wireshark CLI 功能
linux