RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
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 ( )
inlinenoexcept
函数调用图:

成员函数说明

◆ 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
inlinenoexcept

获取节点唯一标识符

◆ 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 列表