문제 : 부스 게시자의 활발한 알림을 연결 및 연결 해제 할 수있는 방법은 무엇입니까?OpenDDS 및 게시자 존재 알림
배경 : 동일한 주제를 사용하는 별도의 컴퓨터에있는 데이터 유형 (dt)의 게시자와 구독자가있는 OpenDDS 구현으로 작업하고 있습니다.
구독자 측 판독기가 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는