1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
use serde::{Deserialize, Serialize};
use rustdds::{rpc::*, GUID};
pub use rustdds::SequenceNumber;
/// [Original](https://docs.ros2.org/foxy/api/rmw/structrmw__request__id__t.html)
/// This structure seems to be identical in structure and function to
/// SampleIdentity defined by the RPC over DDS Spec.
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub struct RmwRequestId {
pub writer_guid: GUID,
pub sequence_number: SequenceNumber,
}
impl From<RmwRequestId> for SampleIdentity {
fn from(
RmwRequestId {
writer_guid,
sequence_number,
}: RmwRequestId,
) -> SampleIdentity {
SampleIdentity {
writer_guid,
sequence_number,
}
}
}
impl From<SampleIdentity> for RmwRequestId {
fn from(
SampleIdentity {
writer_guid,
sequence_number,
}: SampleIdentity,
) -> RmwRequestId {
RmwRequestId {
writer_guid,
sequence_number,
}
}
}
// [original](https://docs.ros2.org/foxy/api/rmw/structrmw__service__info__t.html)
// But where is this used?
//
// pub struct RmwServiceInfo {
// pub source_timestamp: RmwTimePointValue,
// pub received_timestamp: RmwTimePointValue,
// pub request_id: RmwRequestId,
// }