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
/// Namespace identifiers for Session config and message storage.
///
/// Mirrors the C enum `NAMESPACE` from `namespaces.h`.
#[repr(i16)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum Namespace {
/// Messages sent to an updated group which should be able to be retrieved by revoked
/// members are stored in this namespace.
RevokedRetrievableGroupMessages = -11,
/// Messages sent to one-to-one conversations are stored in this namespace.
Default = 0,
/// User profile config.
UserProfile = 2,
/// Contacts config.
Contacts = 3,
/// Volatile conversation info config.
ConvoInfoVolatile = 4,
/// User groups config.
UserGroups = 5,
/// Messages sent to a group.
GroupMessages = 11,
/// Groups config namespace for shared config of the group itself (keys).
GroupKeys = 12,
/// Groups config namespace for shared config of the group itself (info).
GroupInfo = 13,
/// Groups config namespace for shared config of the group itself (members).
GroupMembers = 14,
/// The local config should never be pushed but this gives a nice identifier for each
/// config type.
Local = 9999,
}
impl Namespace {
/// Returns the raw i16 value of this namespace.
pub fn raw(self) -> i16 {
self as i16
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_namespace_values() {
assert_eq!(Namespace::RevokedRetrievableGroupMessages as i16, -11);
assert_eq!(Namespace::Default as i16, 0);
assert_eq!(Namespace::UserProfile as i16, 2);
assert_eq!(Namespace::Contacts as i16, 3);
assert_eq!(Namespace::ConvoInfoVolatile as i16, 4);
assert_eq!(Namespace::UserGroups as i16, 5);
assert_eq!(Namespace::GroupMessages as i16, 11);
assert_eq!(Namespace::GroupKeys as i16, 12);
assert_eq!(Namespace::GroupInfo as i16, 13);
assert_eq!(Namespace::GroupMembers as i16, 14);
assert_eq!(Namespace::Local as i16, 9999);
}
#[test]
fn test_namespace_equality() {
assert_eq!(Namespace::Default, Namespace::Default);
assert_ne!(Namespace::Default, Namespace::UserProfile);
}
#[test]
fn test_namespace_raw() {
assert_eq!(Namespace::GroupKeys.raw(), 12);
assert_eq!(Namespace::RevokedRetrievableGroupMessages.raw(), -11);
}
}