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 - 类型不兼容                              │
│                                                                     │
│  用途:                                                            │
│  • 监控匹配状态                                                   │
│  • 确认可靠传输                                                  │
│  • 存活监控                                                      │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘
相关推荐
@CLoudbays_Martin1111 分钟前
Linux 服务器如何查看是否被植入后门?
linux·服务器·网络·安全·github·ssl
旖旎夜光12 分钟前
C++(类与对象)(下)
开发语言·c++·学习
张小凡vip18 分钟前
Python爬虫实战:高效稳定的文件下载模块设计与实现
开发语言·爬虫·python
江屿风19 分钟前
【科普】【差集&交集概念落地云相册】流食般投喂
开发语言·c++·笔记·算法·云相册
拾光Ծ21 分钟前
【Linux网络】深入理解网络层:从IP协议格式,子网划分到NAT与路由机制
linux·网络·网络协议·tcp/ip·计算机网络
代龙涛22 分钟前
WordPress header.php 与 footer.php 模板结构详解
开发语言·php·wordpress
zho_uzhou31 分钟前
ubuntu服务端运行vue网页步骤
linux·服务器·vue.js·ubuntu
黄贵根6 小时前
JavaScript实现教培行业意向登记系统
开发语言·javascript·ecmascript
zzzll11119 小时前
Claude Code离线安装方案揭秘
开发语言·php
ltl9 小时前
纠删码原理与存储效率
linux