1WriteParam
3个参数:
(1)source_timestamp:写时的时间戳,与时间有关的qos,比如deadline等,会使用这个时间戳,用户可以设置source_timestamp,write的时候通过FASTDDS_EXPORTED_API ReturnCode_t write(const void* const data,fastdds::rtps::WriteParams& params)来写。
data reader可以通过SampleInfo获取source_timestamp。在接收侧也会设置reception_timestamp,用户可以基于两个事件做传输统计,打印日志等。
(2)sample_identity,data writer的guid和序列号,这个属性,用户不可以配置,即使用户设置了属性,在dds内部也会被覆盖。
(3)related_sample_identity,在method调用时可能会用到。
++m_lastCacheChangeSeqNum;
a_change->sequenceNumber = m_lastCacheChangeSeqNum;
if (wparams.source_timestamp().seconds() < 0)
{
Time_t::now(a_change->sourceTimestamp);
}
else
{
a_change->sourceTimestamp = wparams.source_timestamp();
}
a_change->writer_info.num_sent_submessages = 0;
a_change->write_params = wparams;
// Updated sample and related sample identities on the user's write params
wparams.sample_identity().writer_guid(a_change->writerGUID);
wparams.sample_identity().sequence_number(a_change->sequenceNumber);
wparams.related_sample_identity(wparams.sample_identity());
set_fragments(a_change);
source timestap,writer sequnce number,guid prefix和entity id组成guid。在报文中的位置如上图所示。