aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2022-10-04 09:19:43 +0200
committerMax Audron <audron@cocaine.farm>2022-10-04 09:19:43 +0200
commitdf8b72d9c6c2abc5068713e6057303b685461c2e (patch)
treebda3ca5e026d240f0ede52ec090351187734f9cb /src
parentderive 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.rs35
-rw-r--r--src/message/signalproxy/syncmessage.rs78
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,