diff options
| author | Max Audron <audron@cocaine.farm> | 2022-10-04 09:19:43 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2022-10-04 09:19:43 +0200 |
| commit | df8b72d9c6c2abc5068713e6057303b685461c2e (patch) | |
| tree | bda3ca5e026d240f0ede52ec090351187734f9cb /src | |
| parent | derive default for all signalproxy objects and make singalmessage class (diff) | |
add syncmessage Class enum
Diffstat (limited to 'src')
| -rw-r--r-- | src/message/signalproxy/objects/highlightrulemanager.rs | 35 | ||||
| -rw-r--r-- | src/message/signalproxy/syncmessage.rs | 78 |
2 files changed, 76 insertions, 37 deletions
diff --git a/src/message/signalproxy/objects/highlightrulemanager.rs b/src/message/signalproxy/objects/highlightrulemanager.rs index dc1fff9..7151c9b 100644 --- a/src/message/signalproxy/objects/highlightrulemanager.rs +++ b/src/message/signalproxy/objects/highlightrulemanager.rs @@ -255,7 +255,7 @@ mod tests { use crate::message::signalproxy::translation::NetworkList; use crate::primitive::{Variant, VariantList}; - // use pretty_assertions::assert_eq; + use pretty_assertions::assert_eq; fn get_network() -> VariantList { vec![ @@ -277,39 +277,6 @@ mod tests { ] } - - -// [ -// ByteArray("HighlightRuleList"), -// VariantMap({ -// "isCaseSensitive": VariantList([bool(false)]), -// "isEnabled": VariantList([bool(true)]), -// "": StringList(["#test"]), -// "isRegEx": VariantList([bool(false)]), -// "isInverse": VariantList([bool(false)])}), -// ByteArray("highlightNick"), -// i32(1), -// ByteArray("nicksCaseSensitive"), -// bool(false) -// ] - -// [ -// ByteArray("HighlightRuleList"), -// VariantMap({ -// "name": StringList(["testrule"]), -// "isEnabled": VariantList([bool(true)]), -// "sender": StringList(["testuser"]), -// "isInverse": VariantList([bool(false)]), -// "isCaseSensitive": VariantList([bool(false)]), -// "isRegEx": VariantList([bool(false)]), -// "id": VariantList([i32(1)]), -// "channel": StringList(["#test"])}), -// ByteArray("highlightNick"), -// i32(1), -// ByteArray("nicksCaseSensitive"), -// bool(false) -// ] - fn get_runtime() -> HighlightRuleManager { HighlightRuleManager { highlight_rule_list: vec![HighlightRule { diff --git a/src/message/signalproxy/syncmessage.rs b/src/message/signalproxy/syncmessage.rs index bbf4994..7e7aabc 100644 --- a/src/message/signalproxy/syncmessage.rs +++ b/src/message/signalproxy/syncmessage.rs @@ -2,9 +2,81 @@ use crate::message::MessageType; use crate::primitive::{Variant, VariantList}; use crate::{deserialize::Deserialize, serialize::Serialize}; +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub enum Class { + AliasManager, + BufferSyncer, + BufferViewConfig, + BufferViewManager, + CoreInfo, + CoreData, + HighlightRuleManager, + Identity, + IgnoreListManager, + CertManager, + Network, + NetworkInfo, + NetworkConfig, + IrcChannel, + IrcUser, + Unknown, +} + +impl From<String> for Class { + fn from(class: String) -> Self { + Self::from(class.as_str()) + } +} + +impl From<&str> for Class { + fn from(class: &str) -> Self { + match class { + "AliasManager" => Self::AliasManager, + "BufferSyncer" => Self::BufferSyncer, + "BufferViewConfig" => Self::BufferViewConfig, + "BufferViewManager" => Self::BufferViewManager, + "CoreInfo" => Self::CoreInfo, + "CoreData" => Self::CoreData, + "HighlightRuleManager" => Self::HighlightRuleManager, + "Identity" => Self::Identity, + "IgnoreListManager" => Self::IgnoreListManager, + "CertManager" => Self::CertManager, + "Network" => Self::Network, + "NetworkInfo" => Self::NetworkInfo, + "NetworkConfig" => Self::NetworkConfig, + "IrcChannel" => Self::IrcChannel, + "IrcUser" => Self::IrcUser, + _ => Self::Unknown, + } + } +} + +impl Class { + pub fn as_str(&self) -> &str { + match self { + Class::AliasManager => "AliasManager", + Class::BufferSyncer => "BufferSyncer", + Class::BufferViewConfig => "BufferViewConfig", + Class::BufferViewManager => "BufferViewManager", + Class::CoreInfo => "CoreInfo", + Class::CoreData => "CoreData", + Class::HighlightRuleManager => "HighlightRuleManager", + Class::Identity => "Identity", + Class::IgnoreListManager => "IgnoreListManager", + Class::CertManager => "CertManager", + Class::Network => "Network", + Class::NetworkInfo => "NetworkInfo", + Class::NetworkConfig => "NetworkConfig", + Class::IrcChannel => "IrcChannel", + Class::IrcUser => "IrcUser", + Class::Unknown => "Unknown", + } + } +} + #[derive(Clone, Debug, std::cmp::PartialEq)] pub struct SyncMessage { - pub class_name: String, + pub class_name: Class, pub object_name: String, pub slot_name: String, pub params: VariantList, @@ -17,7 +89,7 @@ impl Serialize for SyncMessage { let mut res = VariantList::new(); res.push(Variant::i32(MessageType::SyncMessage as i32)); - res.push(Variant::ByteArray(self.class_name.clone())); + res.push(Variant::ByteArray(self.class_name.as_str().to_owned())); res.push(Variant::ByteArray(self.object_name.clone())); res.push(Variant::ByteArray(self.slot_name.clone())); @@ -36,7 +108,7 @@ impl Deserialize for SyncMessage { Ok(( size, Self { - class_name: match_variant!(res.remove(0), Variant::ByteArray), + class_name: Class::from(match_variant!(res.remove(0), Variant::ByteArray)), object_name: match_variant!(res.remove(0), Variant::ByteArray), slot_name: match_variant!(res.remove(0), Variant::ByteArray), params: res, |
