ros2_client/
message_info.rs1use rustdds::{rpc::SampleIdentity, *};
3
4#[derive(Debug, Clone)]
6pub struct MessageInfo {
7 received_timestamp: Timestamp,
8 source_timestamp: Option<Timestamp>,
9 sequence_number: SequenceNumber,
10 publisher: GUID,
11 related_sample_identity: Option<SampleIdentity>,
12}
13
14impl MessageInfo {
15 pub fn received_timestamp(&self) -> Timestamp {
16 self.received_timestamp
17 }
18
19 pub fn source_timestamp(&self) -> Option<Timestamp> {
20 self.source_timestamp
21 }
22
23 pub fn writer_guid(&self) -> GUID {
24 self.publisher
25 }
26
27 pub fn sample_identity(&self) -> rustdds::rpc::SampleIdentity {
28 rustdds::rpc::SampleIdentity {
29 writer_guid: self.writer_guid(),
30 sequence_number: self.sequence_number,
31 }
32 }
33
34 pub fn related_sample_identity(&self) -> Option<SampleIdentity> {
35 self.related_sample_identity
36 }
37}
38
39impl From<&SampleInfo> for MessageInfo {
40 fn from(sample_info: &SampleInfo) -> MessageInfo {
41 MessageInfo {
42 received_timestamp: Timestamp::ZERO, source_timestamp: sample_info.source_timestamp(),
44 sequence_number: sample_info.sample_identity().sequence_number,
45 publisher: sample_info.publication_handle(), related_sample_identity: sample_info.related_sample_identity(),
47 }
48 }
49}
50
51impl<M> From<&rustdds::no_key::DeserializedCacheChange<M>> for MessageInfo {
52 fn from(dcc: &rustdds::no_key::DeserializedCacheChange<M>) -> MessageInfo {
53 MessageInfo {
54 received_timestamp: Timestamp::ZERO, source_timestamp: dcc.source_timestamp(),
56 sequence_number: dcc.sequence_number,
57 publisher: dcc.writer_guid(),
58 related_sample_identity: dcc.related_sample_identity(),
59 }
60 }
61}