这段文字描述了如何通过 DataReader
访问和处理接收到的数据值。在使用数据读取器时,有两种主要的操作方式:读取(Reading) 和 获取(Taking)。以下是对这些概念的详细解释:
1. 数据读取
数据读取指的是从 DataReader
中提取可用的数据样本,且不移除它们。
操作方法:
DataReader::read_next_sample()
- 这个函数会读取下一个尚未被访问过的数据值,并将其存储在提供的数据缓冲区中。
其他读取函数:
DataReader::read()
:根据特定条件获取一组样本。DataReader::read_instance()
:获取特定实例的一组样本。DataReader::read_next_instance()
:获取下一个尚未访问实例的一组样本。
2. 数据获取
数据获取类似于数据读取,但与之不同的是,这些操作会将返回的样本从 DataReader
中移除。
操作方法:
DataReader::take_next_sample()
- 此函数会读取下一个非以前访问过的数据值,并将其存储在提供的缓冲区中,与
read_next_sample()
不同的是,它同时会将该样本从DataReader
中删除。
- 此函数会读取下一个非以前访问过的数据值,并将其存储在提供的缓冲区中,与
其他获取函数:
DataReader::take()
:根据特定条件获取并移除一组样本。DataReader::take_instance()
:获取并移除特定实例的一组样本。DataReader::take_next_instance()
:获取并移除下一个尚未访问实例的一组样本。
3. 无数据情况
如果在 DataReader
中没有匹配请求条件的数据,那么所有相关操作都会返回 NO_DATA
,并且输出参数将保持不变。这意味着调用者可以检测到没有可用数据,而不需要担心旧有数据或状态被改变。
4. 附加信息
除了实际的数据值,每次执行上述操作还会返回额外的信息,即 SampleInfo
实例。这些信息有助于解释所返回的数据,比如:
- 数据来源的
DataWriter
- 发布的时间戳等元信息
总结
整体来看,以上内容阐述了如何有效地使用 DataReader
来访问和处理实时通信中的数据。通过理解这两种基本的方法(读取和获取),开发者可以选择合适的策略来满足他们应用程序中的特定需求。此外,附带的元信息也为后续处理、调试及优化提供了重要线索,使得整个系统更加健壮和灵活。
内容由零声教学AI助手提供,问题来源于学员提问