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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
use rustdds::{rpc::*, *};
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
pub struct SequenceNumber {
number: i64,
}
impl SequenceNumber {
pub fn new(number: i64) -> SequenceNumber {
SequenceNumber { number }
}
pub fn zero() -> SequenceNumber {
SequenceNumber::new(0)
}
pub fn from_high_low(high: i32, low: u32) -> SequenceNumber {
SequenceNumber {
number: ((high as i64) << 32) + (low as i64),
}
}
pub fn high(&self) -> i32 {
(self.number >> 32) as i32
}
pub fn low(&self) -> u32 {
(self.number & 0xFFFF_FFFF) as u32
}
pub fn next(&self) -> SequenceNumber {
SequenceNumber {
number: self.number + 1,
}
}
}
impl Default for SequenceNumber {
fn default() -> SequenceNumber {
SequenceNumber::new(1)
}
}
impl From<SequenceNumber> for i64 {
fn from(sn: SequenceNumber) -> i64 {
sn.number
}
}
impl From<rustdds::SequenceNumber> for SequenceNumber {
fn from(sn: rustdds::SequenceNumber) -> SequenceNumber {
SequenceNumber::new(i64::from(sn))
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord)]
pub struct RmwRequestId {
pub writer_guid: GUID,
pub sequence_number: SequenceNumber,
}
impl From<RmwRequestId> for SampleIdentity {
fn from(si: RmwRequestId) -> SampleIdentity {
SampleIdentity {
writer_guid: si.writer_guid,
sequence_number: rustdds::SequenceNumber::from(i64::from(si.sequence_number)),
}
}
}
impl From<SampleIdentity> for RmwRequestId {
fn from(si: SampleIdentity) -> RmwRequestId {
RmwRequestId {
writer_guid: si.writer_guid,
sequence_number: SequenceNumber::from(si.sequence_number),
}
}
}