OpenDDS和发布者在场通知
问题:如何获得展位发布者连接和断开连接的活跃度通知?
背景:
我正在使用OpenDDS实现,我有一个发布者和数据类型(dt)的订阅者,使用相同的主题,位于不同的计算机上。
用户端的阅读器已经覆盖了
on_data_available(...)
和on_liveliness_changed(...)
的实现。我的订户首先启动,导致回拨到on_liveliness_changed(...)
,表示没有可用的编写器。当发布者启动时,我得到一个新的回调告诉我有一个可用的作者,当发布者发布时,调用on_data_available(...)
。到目前为止,一切都按预期工作。
出版商的作者有一个被覆盖的on_publication_matched(...)
实现。启动发布者时,由于我们已经启动了订阅者,因此会调用on_publication_matched(...)
。
问题是,当发布者断开连接时,我在读者端没有回复on_liveliness_changed(...)
,也没有在再次启动发布者时获得新的回调。
我试图通过设置readerQos.liveliness.lease_duration
来改变readerQos。
但结果是on_data_available(...)
永远不会被调用,而on_liveliness_changed(...)
的唯一回调是在启动时,告诉我没有发布者。
DDS::DataReaderQos readerQos;
DDS::StatusKind mask = DDS::DATA_AVAILABLE_STATUS | DDS::LIVELINESS_CHANGED_STATUS | DDS::LIVELINESS_LOST_STATUS ;
m_subscriber->get_default_datareader_qos( readerQos );
DDS::Duration_t t = { 3, 0 };
readerQos.liveliness.lease_duration = t;
m_binary_Reader = static_cast<binary::binary_tdatareader( m_subscriber->create_datareader(m_Sender_Topic,readerQos,this, mask, 0, false) );
/的Kristofer
没有找到相关结果
已邀请:
1 个回复
僻朵庙惩竣