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 - 类型不兼容                              │
│                                                                     │
│  用途:                                                            │
│  • 监控匹配状态                                                   │
│  • 确认可靠传输                                                  │
│  • 存活监控                                                      │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘
相关推荐
布莱克6055 分钟前
软中断和硬中断的区别
开发语言·操作系统
whcyhhh33 分钟前
头歌实践教学平台:数据科学与大数据技术导论(十二)
大数据·开发语言·python·数据清洗
Tim风声(网络工程师)37 分钟前
Kail下载
linux·运维·服务器
lzhdim1 小时前
13、JavaScript事件循环机制 - JavaScript学习系列文章
开发语言·前端·javascript·学习·ecmascript
AOwhisky1 小时前
Linux 网络服务架设学习笔记(第五期)——Web 服务(上篇):Apache HTTP Server——从静态到动态
linux·运维·服务器·笔记·学习·云计算·apache
zbyyd2 小时前
Linux 多线程:互斥锁 & 信号量
linux·c语言·开发语言·网络
wuyk5552 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
斑马1392 小时前
Linux软件编程学习笔记(四)——进程
linux·运维·服务器
扛枪的书生2 小时前
Linux 三剑客 - Awk 命令指南
linux·运维
one3123 小时前
高精度MEMS电容式倾角传感器:原理、结构与Python三维可视化
开发语言·python