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(ReqId, KeyId, ValueType, KeyVersion, Option<u64>),
43 Get(ReqId, KeyId),
45 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 SetAck(ReqId, KeyId, KeyVersion, bool),
58 GetAck(ReqId, KeyId, Option<(ValueType, KeyVersion, KeySource)>),
59 DelAck(ReqId, KeyId, Option<KeyVersion>),
60 SubAck(ReqId, KeyId),
61 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(ReqId, KeyId, SubKeyId, ValueType, KeyVersion, Option<u64>),
71 Get(ReqId, KeyId),
73 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 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 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}