aboutsummaryrefslogtreecommitdiff
path: root/src/message
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2023-12-19 19:46:37 +0100
committerMax Audron <audron@cocaine.farm>2023-12-19 19:46:37 +0100
commit3c0cad7d32c65a1e7d6272714c65deb65d07b92c (patch)
treee10067471b66efbeb0082e8fc05367557b86c552 /src/message
parentimplement bufferviewmanager/config init (diff)
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.
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/ignorelistmanager.rs126
1 files changed, 72 insertions, 54 deletions
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<IgnoreType> for Variant {
+ fn from(value: IgnoreType) -> Self {
+ Variant::i32(value as i32)
+ }
+}
+
+impl From<Variant> for IgnoreType {
+ fn from(value: Variant) -> Self {
+ IgnoreType::try_from(value).unwrap()
+ }
+}
+
+impl From<IgnoreType> for i32 {
+ fn from(value: IgnoreType) -> Self {
+ value as i32
+ }
+}
+
impl TryFrom<i32> for IgnoreType {
type Error = &'static str;
@@ -222,18 +240,6 @@ impl TryFrom<i32> 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<StrictnessType> for Variant {
+ fn from(value: StrictnessType) -> Self {
+ Variant::i32(value as i32)
+ }
+}
+
+impl From<Variant> for StrictnessType {
+ fn from(value: Variant) -> Self {
+ StrictnessType::try_from(value).unwrap()
+ }
+}
+
+impl From<StrictnessType> for i32 {
+ fn from(value: StrictnessType) -> Self {
+ value as i32
+ }
+}
+
impl TryFrom<i32> for StrictnessType {
type Error = &'static str;
@@ -255,18 +279,6 @@ impl TryFrom<i32> 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<ScopeType> for Variant {
+ fn from(value: ScopeType) -> Self {
+ Variant::i32(value as i32)
+ }
+}
+
+impl From<Variant> for ScopeType {
+ fn from(value: Variant) -> Self {
+ ScopeType::try_from(value).unwrap()
+ }
+}
+
+impl From<ScopeType> for i32 {
+ fn from(value: ScopeType) -> Self {
+ value as i32
+ }
+}
+
impl TryFrom<i32> for ScopeType {
type Error = &'static str;
@@ -287,15 +317,3 @@ impl TryFrom<i32> 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()
- }
-}