atm0s_sdn_key_value/
msg.rs

1use crate::{KeyId, KeySource, KeyVersion, ReqId, SubKeyId, ValueType};
2use atm0s_sdn_identity::NodeId;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, PartialEq, Eq)]
6pub enum KeyValueBehaviorEvent {
7    FromNode(NodeId, KeyValueMsg),
8    Awake,
9}
10
11#[derive(Debug, PartialEq, Eq)]
12pub enum KeyValueHandlerEvent {}
13
14#[derive(Debug, PartialEq, Eq, Clone)]
15pub enum KeyValueSdkEventError {
16    NetworkError,
17    Timeout,
18    InternalError,
19}
20
21#[derive(Debug, PartialEq, Eq, Clone)]
22pub enum KeyValueSdkEvent {
23    Get(u64, KeyId, u64),
24    GetH(u64, KeyId, u64),
25    Set(KeyId, ValueType, Option<u64>),
26    SetH(KeyId, SubKeyId, ValueType, Option<u64>),
27    Del(KeyId),
28    DelH(KeyId, SubKeyId),
29    Sub(u64, KeyId, Option<u64>),
30    SubH(u64, KeyId, Option<u64>),
31    Unsub(u64, KeyId),
32    UnsubH(u64, KeyId),
33    OnGet(u64, KeyId, Result<Option<(ValueType, KeyVersion, KeySource)>, KeyValueSdkEventError>),
34    OnGetH(u64, KeyId, Result<Option<Vec<(SubKeyId, ValueType, KeyVersion, KeySource)>>, KeyValueSdkEventError>),
35    OnKeyChanged(u64, KeyId, Option<ValueType>, KeyVersion, KeySource),
36    OnKeyHChanged(u64, KeyId, SubKeyId, Option<ValueType>, KeyVersion, KeySource),
37}
38
39#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
40pub enum SimpleRemoteEvent {
41    /// Set sub key of key
42    Set(ReqId, KeyId, ValueType, KeyVersion, Option<u64>),
43    /// Get key with specific sub key or all sub keys if not specified
44    Get(ReqId, KeyId),
45    /// Delete key with specific sub key or all sub keys created by requrested node if not specified
46    /// If KeyVersion is greater or equal current stored version then that key will be deleted. Otherwise, nothing will happen and return Ack with NoneKeyVersion
47    Del(ReqId, KeyId, KeyVersion),
48    Sub(ReqId, KeyId, Option<u64>),
49    Unsub(ReqId, KeyId),
50    OnKeySetAck(ReqId),
51    OnKeyDelAck(ReqId),
52}
53
54#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone)]
55pub enum SimpleLocalEvent {
56    /// Response set request with key and version, if success => true, otherwise => false
57    SetAck(ReqId, KeyId, KeyVersion, bool),
58    GetAck(ReqId, KeyId, Option<(ValueType, KeyVersion, KeySource)>),
59    DelAck(ReqId, KeyId, Option<KeyVersion>),
60    SubAck(ReqId, KeyId),
61    /// Response unsub request with key, if success => true, otherwise => false
62    UnsubAck(ReqId, KeyId, bool),
63    OnKeySet(ReqId, KeyId, ValueType, KeyVersion, KeySource),
64    OnKeyDel(ReqId, KeyId, KeyVersion, KeySource),
65}
66
67#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
68pub enum HashmapRemoteEvent {
69    /// Set sub key of key
70    Set(ReqId, KeyId, SubKeyId, ValueType, KeyVersion, Option<u64>),
71    /// Get key with specific sub key or all sub keys if not specified
72    Get(ReqId, KeyId),
73    /// Delete key with specific sub key or all sub keys created by requrested node if not specified
74    /// If KeyVersion is greater or equal current stored version then that key will be deleted. Otherwise, nothing will happen and return Ack with NoneKeyVersion
75    Del(ReqId, KeyId, SubKeyId, KeyVersion),
76    Sub(ReqId, KeyId, Option<u64>),
77    Unsub(ReqId, KeyId),
78    OnKeySetAck(ReqId),
79    OnKeyDelAck(ReqId),
80}
81
82#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone)]
83pub enum HashmapLocalEvent {
84    /// Response set request with key and version, if success => true, otherwise => false
85    SetAck(ReqId, KeyId, SubKeyId, KeyVersion, bool),
86    GetAck(ReqId, KeyId, Option<Vec<(SubKeyId, ValueType, KeyVersion, KeySource)>>),
87    DelAck(ReqId, KeyId, SubKeyId, Option<KeyVersion>),
88    SubAck(ReqId, KeyId),
89    /// Response unsub request with key, if success => true, otherwise => false
90    UnsubAck(ReqId, KeyId, bool),
91    OnKeySet(ReqId, KeyId, SubKeyId, ValueType, KeyVersion, KeySource),
92    OnKeyDel(ReqId, KeyId, SubKeyId, KeyVersion, KeySource),
93}
94
95#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
96pub enum KeyValueMsg {
97    SimpleRemote(SimpleRemoteEvent),
98    SimpleLocal(SimpleLocalEvent),
99    HashmapRemote(HashmapRemoteEvent),
100    HashmapLocal(HashmapLocalEvent),
101}
102
103#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
104pub enum KeyValueSdkMsg {
105    Set(KeyId, ValueType),
106    Del(KeyId),
107    Sub(KeyId),
108    Unsub(KeyId),
109}