問題:如何獲取展位發佈者連接和斷開的活動通知?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