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 - 类型不兼容                              │
│                                                                     │
│  用途:                                                            │
│  • 监控匹配状态                                                   │
│  • 确认可靠传输                                                  │
│  • 存活监控                                                      │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘
相关推荐
_upupup10 分钟前
Linux中的自动化构建——make/Makefile
linux·运维·自动化
Escalating_xu21 分钟前
【C 语言】深入理解指针(5):sizeof、strlen、数组名语义与指针笔试题全解析
java·c语言·开发语言
HEJOO928 分钟前
Linux 设备驱动系列——使用全局工作队列
java·linux·算法
Nebula_g1 小时前
JavaSE加强:Stream流
java·开发语言·windows·stream·javase·流
估值探索者1 小时前
【Python量化系统工程实战 #08】从脚本到生产:量化系统上线 checklist 的最小闭环
java·开发语言·jvm·python·数据挖掘·数据·股票数据api接口
Wang's Blog1 小时前
Java框架 SpringCloud 快速入门: Nacos 环境隔离
java·开发语言·spring cloud
slimer1 小时前
07.进制转换上篇:位权展开与十进制互转
linux
顺风尿一寸1 小时前
手写迷你 Docker:用 Namespace + Cgroup v2 实现一个简单容器
linux
破芽1 小时前
python知识点整理02
开发语言·python
一木 之林2 小时前
DeepSeek Agent 开发(三)
java·大数据·linux