DataReaderListener
是一个抽象类,定义了在 DataReader
状态变化时将触发的回调方法。默认情况下,所有这些回调都是空实现,不执行任何操作。用户应当实现该类的特化版本,并重写需要的回调方法。未被重写的回调将保持为空实现。
以下是 DataReaderListener
定义的主要回调方法及其说明:
1. on_data_available()
- 描述:当应用程序在
DataReader
上有新数据可用时调用此方法。 - 注意事项:没有对该回调的调用进行排队,这意味着如果同时收到多个新数据更改,可能只会发出一次回调,而不是为每个更改发出一次。如果应用程序在此回调中处理接收到的数据,则必须继续读取数据直到没有新的更改可供读取。
2. on_subscription_matched()
- 描述:当
DataReader
找到与主题匹配并具有共同分区和兼容 QoS 的DataWriter
时触发;或者当与之前认为已匹配的DataWriter
失去匹配关系时也会触发。 - 补充信息:它还会在一个已匹配的
DataWriter
改变其DataWriterQos
时被触发。
3. on_requested_deadline_missed()
- 描述:当
DataReader
在其配置的 Deadline 周期内未能接收到数据时调用此方法。 - 特点:对于每个超出的 Deadline 周期和数据实例都会调用这个回调。
4. on_requested_incompatible_qos()
- 描述:当找到一个与主题匹配且具有共同分区,但 QoS 与在
DataReader
中定义的不兼容的数据写入者时,会触发此方法。
5. on_liveliness_changed()
- 描述:当已匹配的
DataWriter
的活跃状态发生变化时触发。例如,一个不活动的 DataWriter 变为活跃,或反之亦然。
6. on_sample_rejected()
- 描述:收到的数据样本被拒绝,此时会调用此方法。更多信息请参考
SampleRejectedStatus
。
7. on_sample_lost()
- 描述:某个数据样本丢失,将永远无法接收。此时会调用此方法。更多信息请参考
SampleLostStatus
。
总结
开发人员可以通过继承 DataReaderListener
类并实现所需的方法来响应各种事件。这使得应用程序能够处理来自数据源的新信息、监控连接状态,以及管理QoS相关问题等。同时,由于大多数回调默认是空实现,因此开发者可以根据具体需求选择性地覆盖这些回调,以提高灵活性和控制力。
内容由零声教学AI助手提供,问题来源于学员提问