From 3c0cad7d32c65a1e7d6272714c65deb65d07b92c Mon Sep 17 00:00:00 2001 From: Max Audron Date: Tue, 19 Dec 2023 19:46:37 +0100 Subject: decromulate ignorelistmanager i32 type impl and derive this was for whatever reason pretty confusing, but there is no need to impl the Network trait here, we should instead be using From impls for going to the Variant and i32 directly. That way the code becomes cleaner and we don't have to worry about these conversions anymore. --- .../signalproxy/objects/ignorelistmanager.rs | 126 ++++++++++++--------- 1 file changed, 72 insertions(+), 54 deletions(-) (limited to 'src') diff --git a/src/message/signalproxy/objects/ignorelistmanager.rs b/src/message/signalproxy/objects/ignorelistmanager.rs index 78570aa..1d04f98 100644 --- a/src/message/signalproxy/objects/ignorelistmanager.rs +++ b/src/message/signalproxy/objects/ignorelistmanager.rs @@ -1,7 +1,7 @@ -use crate::message::{ - signalproxy::translation::{Network, NetworkMap}, +use crate::{message::{ + signalproxy::translation::{Network, NetworkMap, NetworkList}, Syncable, Class, -}; +}, primitive::Variant}; use libquassel_derive::{sync, NetworkList, NetworkMap}; @@ -54,11 +54,11 @@ impl IgnoreListManager { sync!( "requestAddIgnoreListItem", [ - ignore_type.to_network(), + ignore_type, ignore_rule, is_regex, - strictness.to_network(), - scope.to_network(), + strictness, + scope, scope_rule, is_active ] @@ -78,11 +78,11 @@ impl IgnoreListManager { sync!( "addIgnoreListItem", [ - item.ignore_type.to_network(), + item.ignore_type, item.ignore_rule.clone(), item.is_regex, - item.strictness.to_network(), - item.scope.to_network(), + item.strictness, + item.scope, item.scope_rule.clone(), item.is_active ] @@ -124,11 +124,11 @@ impl crate::message::StatefulSyncableClient for IgnoreListManager { { match msg.slot_name.as_str() { "addIgnoreListItem" => self.add_ignore_list_item(IgnoreListItem { - ignore_type: IgnoreType::from_network(&mut get_param!(msg)), + ignore_type: get_param!(msg), ignore_rule: get_param!(msg), is_regex: get_param!(msg), - strictness: StrictnessType::from_network(&mut get_param!(msg)), - scope: ScopeType::from_network(&mut get_param!(msg)), + strictness: get_param!(msg), + scope: get_param!(msg), scope_rule: get_param!(msg), is_active: get_param!(msg), }), @@ -153,11 +153,11 @@ impl crate::message::StatefulSyncableServer for IgnoreListManager { { match msg.slot_name.as_str() { "requestAddIgnoreListItem" => self.add_ignore_list_item(IgnoreListItem { - ignore_type: IgnoreType::from_network(&mut get_param!(msg)), + ignore_type: get_param!(msg), ignore_rule: get_param!(msg), is_regex: get_param!(msg), - strictness: StrictnessType::from_network(&mut get_param!(msg)), - scope: ScopeType::from_network(&mut get_param!(msg)), + strictness: get_param!(msg), + scope: get_param!(msg), scope_rule: get_param!(msg), is_active: get_param!(msg), }), @@ -181,15 +181,15 @@ impl Syncable for IgnoreListManager { #[derive(Debug, Clone, PartialEq, NetworkMap)] #[network(repr = "maplist")] pub struct IgnoreListItem { - #[network(rename = "ignoreType", network, type = "i32")] + #[network(rename = "ignoreType", type = "i32")] pub ignore_type: IgnoreType, #[network(rename = "ignoreRule", variant = "StringList")] pub ignore_rule: String, #[network(rename = "isRegEx")] pub is_regex: bool, - #[network(rename = "strictness", network, type = "i32")] + #[network(rename = "strictness", type = "i32")] pub strictness: StrictnessType, - #[network(rename = "scope", network, type = "i32")] + #[network(rename = "scope", type = "i32")] pub scope: ScopeType, #[network(rename = "scopeRule", variant = "StringList")] pub scope_rule: String, @@ -209,6 +209,24 @@ pub enum IgnoreType { CtcpIgnore = 0x02, } +impl From for Variant { + fn from(value: IgnoreType) -> Self { + Variant::i32(value as i32) + } +} + +impl From for IgnoreType { + fn from(value: Variant) -> Self { + IgnoreType::try_from(value).unwrap() + } +} + +impl From for i32 { + fn from(value: IgnoreType) -> Self { + value as i32 + } +} + impl TryFrom for IgnoreType { type Error = &'static str; @@ -222,18 +240,6 @@ impl TryFrom for IgnoreType { } } -impl crate::message::signalproxy::Network for IgnoreType { - type Item = i32; - - fn to_network(&self) -> Self::Item { - *self as i32 - } - - fn from_network(input: &mut Self::Item) -> Self { - IgnoreType::try_from(*input).unwrap() - } -} - #[repr(i32)] #[derive(Debug, Clone, Copy, PartialEq)] pub enum StrictnessType { @@ -242,6 +248,24 @@ pub enum StrictnessType { HardStrictness = 0x02, } +impl From for Variant { + fn from(value: StrictnessType) -> Self { + Variant::i32(value as i32) + } +} + +impl From for StrictnessType { + fn from(value: Variant) -> Self { + StrictnessType::try_from(value).unwrap() + } +} + +impl From for i32 { + fn from(value: StrictnessType) -> Self { + value as i32 + } +} + impl TryFrom for StrictnessType { type Error = &'static str; @@ -255,18 +279,6 @@ impl TryFrom for StrictnessType { } } -impl crate::message::signalproxy::Network for StrictnessType { - type Item = i32; - - fn to_network(&self) -> Self::Item { - *self as i32 - } - - fn from_network(input: &mut Self::Item) -> Self { - Self::try_from(*input).unwrap() - } -} - #[repr(i32)] #[derive(Debug, Clone, Copy, PartialEq)] pub enum ScopeType { @@ -275,6 +287,24 @@ pub enum ScopeType { ChannelScope = 0x02, } +impl From for Variant { + fn from(value: ScopeType) -> Self { + Variant::i32(value as i32) + } +} + +impl From for ScopeType { + fn from(value: Variant) -> Self { + ScopeType::try_from(value).unwrap() + } +} + +impl From for i32 { + fn from(value: ScopeType) -> Self { + value as i32 + } +} + impl TryFrom for ScopeType { type Error = &'static str; @@ -287,15 +317,3 @@ impl TryFrom for ScopeType { } } } - -impl crate::message::signalproxy::Network for ScopeType { - type Item = i32; - - fn to_network(&self) -> Self::Item { - *self as i32 - } - - fn from_network(input: &mut Self::Item) -> Self { - Self::try_from(*input).unwrap() - } -} -- cgit v1.2.3