| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | Protected 属性 | 所有成员列表
rm::lpss::async::Node类 参考

轻量级发布订阅服务异步节点 更多...

`#include <rmvl/lpss/node.hpp>`

rm::lpss::async::Node 的协作图:

## Public 成员函数
| Node (std::string_view name, uint8_t domain_id=0)
| 创建通用节点，默认域 ID 为 0
| ~Node () noexcept
Guid | guid () const noexcept
| 获取节点唯一标识符
template<typename MsgType>
Publisher< MsgType >::ptr | createPublisher (std::string_view topic) noexcept
| 创建发布者
template<typename MsgType, typename SubscribeMsgCallback, typename = std::enable_if_t<std::is_invocable_v<SubscribeMsgCallback, const MsgType &>>>
Subscriber< MsgType >::ptr | createSubscriber (std::string_view topic, SubscribeMsgCallback callback) noexcept
| 创建订阅者
template<typename MsgType>
void | destroyPublisher (typename Publisher< MsgType >::ptr pub)
| 销毁发布者
template<typename MsgType>
void | destroySubscriber (typename Subscriber< MsgType >::ptr sub)
| 销毁订阅者
template<typename Rep, typename Period, typename TimerCallback>
Timer::ptr | createTimer (std::chrono::duration< Rep, Period > dur, TimerCallback callback) noexcept
| 创建异步定时器
void | spin ()
| 运行异步 IO 上下文
void | shutdown () noexcept
| 手动停止节点运行

## Protected 属性
rm::async::IOContext | _ctx {}
| 异步 IO 上下文
std::unordered_map< Guid, NodeStorageInfo, GuidHash > | _discovered_nodes {}
| 已发现的节点列表
std::unordered_map< std::string, DataWriterBase::ptr > | _local_writers {}
| 已注册的 Writers 列表
std::unordered_map< std::string, DataReaderBase::ptr > | _local_readers {}
| 已注册的 Readers 列表
std::unordered_map< std::string, DiscoveredWriterStorageInfo > | _discovered_writers {}
| 已发现的 Writers 列表
std::unordered_map< std::string, DiscoveredReaderStorageInfo > | _discovered_readers {}
| 已发现的 Readers 列表

## 详细描述

轻量级发布订阅服务异步节点

- 内置节点发现协议 NDP (Node Discovery Protocol)，用于节点间的自动发现与通信
- 内置通信端点发现协议 EDP (Endpoint Discovery Protocol)，用于发布者与订阅者间的自动发现与通信
  参见
    详情见 轻量发布订阅服务 —— LPSS

## 构造及析构函数说明

## ◆ Node()

rm::lpss::async::Node::Node | ( | std::string_view | name,
|  | uint8_t | domain_id = 0 )
| explicit

创建通用节点，默认域 ID 为 0

参数

  [in] | name | 节点名称
  [in] | domain_id | 域 ID

## ◆ ~Node()

rm::lpss::async::Node::~Node | ( |  | ) |
| inline noexcept

函数调用图:

## 成员函数说明

## ◆ createPublisher()

template<typename MsgType>

Publisher< MsgType >::ptr rm::lpss::async::Node::createPublisher | ( | std::string_view | topic | ) |
| noexcept

创建发布者

模板参数

  MsgType | 消息类型

参数

  [in] | topic | 话题名称

返回
  发布者对象的智能指针

## ◆ createSubscriber()

template<typename MsgType, typename SubscribeMsgCallback, typename = std::enable_if_t<std::is_invocable_v<SubscribeMsgCallback, const MsgType &>>>

Subscriber< MsgType >::ptr rm::lpss::async::Node::createSubscriber | ( | std::string_view | topic,
|  | SubscribeMsgCallback | callback )
| noexcept

创建订阅者

模板参数

  MsgType | 消息类型
  SubscribeMsgCallback | 订阅回调函数类型

参数

  [in] | topic | 话题名称
  [in] | callback | 订阅回调函数

返回
  订阅者对象的智能指针

## ◆ createTimer()

template<typename Rep, typename Period, typename TimerCallback>

Timer::ptr rm::lpss::async::Node::createTimer | ( | std::chrono::duration< Rep, Period > | dur,
|  | TimerCallback | callback )
| noexcept

创建异步定时器

模板参数

  Rep | 定时器时间间隔的表示类型
  Period | 定时器时间间隔的周期类型
  TimerCallback | 定时器回调函数类型

参数

  [in] | dur | 定时器时间间隔
  [in] | callback | 定时器回调函数

返回
  定时器对象的智能指针

## ◆ destroyPublisher()

template<typename MsgType>

void rm::lpss::async::Node::destroyPublisher | ( | typename Publisher< MsgType >::ptr | pub | ) |

销毁发布者

模板参数

  MsgType | 消息类型

参数

  [in] | pub | 发布者对象

## ◆ destroySubscriber()

template<typename MsgType>

void rm::lpss::async::Node::destroySubscriber | ( | typename Subscriber< MsgType >::ptr | sub | ) |

销毁订阅者

模板参数

  MsgType | 消息类型

参数

  [in] | sub | 订阅者对象

## ◆ guid()

Guid rm::lpss::async::Node::guid | ( |  | ) | const
| inline noexcept

获取节点唯一标识符

## ◆ shutdown()

void rm::lpss::async::Node::shutdown | ( |  | ) |
| noexcept

手动停止节点运行

注解
  推荐使用析构函数自动清理资源并停止节点，除非在多线程环境中需要提前停止节点以释放资源

## ◆ spin()

void rm::lpss::async::Node::spin | ( |  | ) |
| inline

运行异步 IO 上下文

## 类成员变量说明

## ◆ _ctx

rm::async::IOContext rm::lpss::async::Node::_ctx {}
| protected

异步 IO 上下文

## ◆ _discovered_nodes

std::unordered_map<Guid, NodeStorageInfo, GuidHash> rm::lpss::async::Node::_discovered_nodes {}
| protected

已发现的节点列表

## ◆ _discovered_readers

std::unordered_map<std::string, DiscoveredReaderStorageInfo> rm::lpss::async::Node::_discovered_readers {}
| protected

已发现的 Readers 列表

## ◆ _discovered_writers

std::unordered_map<std::string, DiscoveredWriterStorageInfo> rm::lpss::async::Node::_discovered_writers {}
| protected

已发现的 Writers 列表

## ◆ _local_readers

std::unordered_map<std::string, DataReaderBase::ptr> rm::lpss::async::Node::_local_readers {}
| protected

已注册的 Readers 列表

## ◆ _local_writers

std::unordered_map<std::string, DataWriterBase::ptr> rm::lpss::async::Node::_local_writers {}
| protected

已注册的 Writers 列表