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
93
94
95
96
97
98
99
100
101
102
103
#[derive(Clone,Copy,Debug,PartialEq)]
#[allow(non_camel_case_types)]
pub enum MessageVersion {
FIX40,
FIX41,
FIX42,
FIX43,
FIX44,
FIX50,
FIX50SP1,
FIX50SP2,
}
impl MessageVersion {
pub fn new(value: u32) -> Option<MessageVersion> {
match value {
2 => Some(MessageVersion::FIX40),
3 => Some(MessageVersion::FIX41),
4 => Some(MessageVersion::FIX42),
5 => Some(MessageVersion::FIX43),
6 => Some(MessageVersion::FIX44),
7 => Some(MessageVersion::FIX50),
8 => Some(MessageVersion::FIX50SP1),
9 => Some(MessageVersion::FIX50SP2),
_ => None,
}
}
pub fn from_bytes(bytes: &[u8]) -> Option<MessageVersion> {
match bytes {
b"2" => Some(MessageVersion::FIX40),
b"3" => Some(MessageVersion::FIX41),
b"4" => Some(MessageVersion::FIX42),
b"5" => Some(MessageVersion::FIX43),
b"6" => Some(MessageVersion::FIX44),
b"7" => Some(MessageVersion::FIX50),
b"8" => Some(MessageVersion::FIX50SP1),
b"9" => Some(MessageVersion::FIX50SP2),
_ => None,
}
}
pub fn as_value(&self) -> u8 {
match *self {
MessageVersion::FIX40 => 2,
MessageVersion::FIX41 => 3,
MessageVersion::FIX42 => 4,
MessageVersion::FIX43 => 5,
MessageVersion::FIX44 => 6,
MessageVersion::FIX50 => 7,
MessageVersion::FIX50SP1 => 8,
MessageVersion::FIX50SP2 => 9,
}
}
pub fn as_bytes(&self) -> &[u8] {
match *self {
MessageVersion::FIX40 => b"2",
MessageVersion::FIX41 => b"3",
MessageVersion::FIX42 => b"4",
MessageVersion::FIX43 => b"5",
MessageVersion::FIX44 => b"6",
MessageVersion::FIX50 => b"7",
MessageVersion::FIX50SP1 => b"8",
MessageVersion::FIX50SP2 => b"9",
}
}
pub fn all() -> Vec<MessageVersion> {
vec![
MessageVersion::FIX40,
MessageVersion::FIX41,
MessageVersion::FIX42,
MessageVersion::FIX43,
MessageVersion::FIX44,
MessageVersion::FIX50,
MessageVersion::FIX50SP1,
MessageVersion::FIX50SP2
]
}
}