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 - 类型不兼容                              │
│                                                                     │
│  用途:                                                            │
│  • 监控匹配状态                                                   │
│  • 确认可靠传输                                                  │
│  • 存活监控                                                      │
│                                                                     │
└────────────────────────────────────────────────────────────────────┘
相关推荐
是个西兰花29 分钟前
Linux:深入解析Linux线程原理与实现
linux·运维·c++·线程·互斥锁
运维大师1 小时前
【Linux运维极简教程】07-磁盘管理与LVM
linux·运维·服务器
乖巧的妹子1 小时前
刷题总结知识
linux·服务器·windows
多加点辣也没关系1 小时前
JavaScript|第24章:事件循环与并发模型
开发语言·javascript·ecmascript
ん贤1 小时前
怎么设计,才算一个优秀审计模块
大数据·开发语言·设计·审计
l1t1 小时前
测试用rust重写的postgresql: pgrust
开发语言·postgresql·rust
2501_948106911 小时前
计算机毕业设计之jsp-智慧旅游分享平台
java·开发语言·spark·汽车·课程设计·旅游
阿里云云原生2 小时前
Agent 不再是“玩具”!AgentScope Java 2.0 GA 发布:构建企业级分布式智能体底座
java·开发语言·分布式·agentscope
拳里剑气2 小时前
Linux:基础IO
linux·运维·服务器·io
BIM云平台开发2 小时前
【App.vue里跟踪页面跳转和用户ID】
开发语言·前端·javascript