aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/mod.rs21
-rw-r--r--src/message/signalproxy/objects/aliasmanager.rs9
-rw-r--r--src/message/signalproxy/objects/buffersyncer.rs10
-rw-r--r--src/message/signalproxy/objects/bufferview.rs15
-rw-r--r--src/message/signalproxy/objects/certmanager.rs5
-rw-r--r--src/message/signalproxy/objects/coreinfo.rs13
-rw-r--r--src/message/signalproxy/objects/highlightrulemanager.rs19
-rw-r--r--src/message/signalproxy/objects/identity.rs5
-rw-r--r--src/message/signalproxy/objects/ignorelistmanager.rs17
-rw-r--r--src/message/signalproxy/objects/ircchannel.rs24
-rw-r--r--src/message/signalproxy/objects/ircuser.rs11
-rw-r--r--src/message/signalproxy/objects/mod.rs52
-rw-r--r--src/message/signalproxy/objects/network.rs43
-rw-r--r--src/message/signalproxy/objects/networkinfo.rs17
-rw-r--r--src/message/signalproxy/translation/mod.rs8
15 files changed, 142 insertions, 127 deletions
diff --git a/src/message/signalproxy/mod.rs b/src/message/signalproxy/mod.rs
index 41057ca..d5cdd80 100644
--- a/src/message/signalproxy/mod.rs
+++ b/src/message/signalproxy/mod.rs
@@ -1,10 +1,7 @@
-use std::convert::TryInto;
-
use crate::{
deserialize::Deserialize,
- primitive::{VariantList, VariantMap},
+ primitive::{Variant, VariantList},
serialize::Serialize,
- session::Session,
};
use num_derive::{FromPrimitive, ToPrimitive};
@@ -63,9 +60,14 @@ pub trait Syncable {
/// A Stateful Syncable Object
#[allow(unused_variables)]
-pub trait StatefulSyncable: Syncable + translation::NetworkMap {
+pub trait StatefulSyncable: Syncable + translation::NetworkMap
+// where
+// <T as Iterator>::Item: ToString,
+where
+ Variant: From<<Self as translation::NetworkMap>::Item>,
+{
/// Client -> Server: Update the whole object with received data
- fn update(&mut self, session: impl SyncProxy, param: VariantMap)
+ fn update(&mut self, session: impl SyncProxy, param: <Self as translation::NetworkMap>::Item)
where
Self: Sized,
{
@@ -80,8 +82,11 @@ pub trait StatefulSyncable: Syncable + translation::NetworkMap {
}
/// Server -> Client: Update the whole object with received data
- fn request_update(&mut self, session: impl SyncProxy, mut param: VariantMap)
- where
+ fn request_update(
+ &mut self,
+ session: impl SyncProxy,
+ mut param: <Self as translation::NetworkMap>::Item,
+ ) where
Self: Sized,
{
#[cfg(feature = "client")]
diff --git a/src/message/signalproxy/objects/aliasmanager.rs b/src/message/signalproxy/objects/aliasmanager.rs
index cb634ba..d696aae 100644
--- a/src/message/signalproxy/objects/aliasmanager.rs
+++ b/src/message/signalproxy/objects/aliasmanager.rs
@@ -1,18 +1,17 @@
use std::convert::TryInto;
-use libquassel_derive::{Network, NetworkList, NetworkMap};
+use libquassel_derive::{NetworkList, NetworkMap};
use crate::message::{StatefulSyncable, SyncProxy, Syncable};
-use crate::message::signalproxy::translation::{Network, NetworkMap};
-use crate::primitive::{VariantList, VariantMap};
+use crate::message::signalproxy::translation::NetworkMap;
/// AliasManager
/// keeps a list of all registered aliases
/// syncable
#[derive(Clone, Debug, std::cmp::PartialEq, NetworkList, NetworkMap)]
pub struct AliasManager {
- #[network(rename = "Aliases", variant = "VariantMap", network)]
+ #[network(rename = "Aliases", variant = "VariantMap", network, map)]
pub aliases: Vec<Alias>,
}
@@ -51,7 +50,7 @@ impl Syncable for AliasManager {
/// Alias
/// Represents a signle alias
-#[derive(Clone, Debug, std::cmp::PartialEq, Network)]
+#[derive(Clone, Debug, std::cmp::PartialEq, NetworkMap)]
#[network(repr = "maplist")]
pub struct Alias {
#[network(rename = "names", variant = "StringList")]
diff --git a/src/message/signalproxy/objects/buffersyncer.rs b/src/message/signalproxy/objects/buffersyncer.rs
index ecacbc9..62ee793 100644
--- a/src/message/signalproxy/objects/buffersyncer.rs
+++ b/src/message/signalproxy/objects/buffersyncer.rs
@@ -1,9 +1,11 @@
use std::collections::HashMap;
use crate::primitive::MessageType;
-use libquassel_derive::Network;
+use libquassel_derive::NetworkList;
-#[derive(Debug, Clone, PartialEq, Network)]
+use crate::message::signalproxy::translation::Network;
+
+#[derive(Debug, Clone, PartialEq, NetworkList)]
#[network(repr = "list")]
pub struct BufferSyncer {
#[network(rename = "Activities", network, variant = "VariantList")]
@@ -82,7 +84,7 @@ pub trait BufferSyncerClient {
#[cfg(test)]
mod tests {
use super::*;
- use crate::message::signalproxy::translation::Network;
+ use crate::message::signalproxy::translation::NetworkList;
use crate::primitive::{Variant, VariantList};
use pretty_assertions::assert_eq;
@@ -185,7 +187,7 @@ mod tests {
#[test]
fn buffersyncer_from_network() {
assert_eq!(
- BufferSyncer::from_network(&mut get_network()),
+ BufferSyncer::from_network_list(&mut get_network()),
get_runtime()
)
}
diff --git a/src/message/signalproxy/objects/bufferview.rs b/src/message/signalproxy/objects/bufferview.rs
index 512a5b9..5ac608c 100644
--- a/src/message/signalproxy/objects/bufferview.rs
+++ b/src/message/signalproxy/objects/bufferview.rs
@@ -1,6 +1,8 @@
-use libquassel_derive::Network;
use std::{collections::HashMap, convert::TryInto};
+use libquassel_derive::NetworkList;
+
+use crate::message::signalproxy::translation::Network;
use crate::primitive::{Variant, VariantList};
#[derive(Debug, Clone, PartialEq)]
@@ -27,10 +29,8 @@ pub struct BufferViewManager {
// update(properties: QVariantMap)
}
-impl super::Network for BufferViewManager {
- type Item = VariantList;
-
- fn to_network(&self) -> Self::Item {
+impl super::NetworkList for BufferViewManager {
+ fn to_network_list(&self) -> VariantList {
let mut res = Vec::with_capacity(2);
res.push(Variant::ByteArray(s!("bufferViewIds")));
@@ -44,7 +44,7 @@ impl super::Network for BufferViewManager {
return res;
}
- fn from_network(_input: &mut Self::Item) -> Self {
+ fn from_network_list(_input: &mut VariantList) -> Self {
// TODO Somehow do the initrequests for all the IDs we get here
Self {
buffer_view_configs: HashMap::new(),
@@ -52,8 +52,7 @@ impl super::Network for BufferViewManager {
}
}
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct BufferViewConfig {
#[network(rename = "BufferList", network, variant = "VariantList")]
pub buffers: Vec<i32>,
diff --git a/src/message/signalproxy/objects/certmanager.rs b/src/message/signalproxy/objects/certmanager.rs
index 238c495..d105fcf 100644
--- a/src/message/signalproxy/objects/certmanager.rs
+++ b/src/message/signalproxy/objects/certmanager.rs
@@ -1,7 +1,6 @@
-use libquassel_derive::Network;
+use libquassel_derive::NetworkList;
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct CertManager {
#[network(rename = "sslKey", variant = "ByteArray")]
pub ssl_key: String,
diff --git a/src/message/signalproxy/objects/coreinfo.rs b/src/message/signalproxy/objects/coreinfo.rs
index a717366..ef9826f 100644
--- a/src/message/signalproxy/objects/coreinfo.rs
+++ b/src/message/signalproxy/objects/coreinfo.rs
@@ -1,11 +1,11 @@
-use libquassel_derive::Network;
+use libquassel_derive::NetworkMap;
use crate::primitive::{DateTime, StringList};
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "map")]
pub struct CoreInfo {
- #[network(rename = "coreData", network, variant = "VariantMap")]
+ #[network(rename = "coreData", variant = "VariantMap", network)]
core_data: CoreData,
}
@@ -17,7 +17,7 @@ pub struct CoreInfo {
// */
// update(properties: QVariantMap)
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "map")]
pub struct CoreData {
#[network(rename = "quasselVersion")]
@@ -31,12 +31,13 @@ pub struct CoreData {
#[network(
rename = "sessionConnectedClientData",
variant = "VariantList",
- network
+ network,
+ map
)]
session_connected_client_data: Vec<ConnectedClient>,
}
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "map")]
pub struct ConnectedClient {
#[network(rename = "id")]
diff --git a/src/message/signalproxy/objects/highlightrulemanager.rs b/src/message/signalproxy/objects/highlightrulemanager.rs
index e6429d2..ef64a2c 100644
--- a/src/message/signalproxy/objects/highlightrulemanager.rs
+++ b/src/message/signalproxy/objects/highlightrulemanager.rs
@@ -1,20 +1,21 @@
-use libquassel_derive::Network;
+use libquassel_derive::{NetworkList, NetworkMap};
+
+use crate::message::signalproxy::translation::{Network, NetworkMap};
use num_derive::{FromPrimitive, ToPrimitive};
use num_traits::{FromPrimitive, ToPrimitive};
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct HighlightRuleManager {
- #[network(rename = "HighlightRuleList", network, variant = "VariantMap")]
+ #[network(rename = "HighlightRuleList", variant = "VariantMap", network, map)]
highlight_rule_list: Vec<HighlightRule>,
- #[network(rename = "highlightNick", network, variant = "i32")]
+ #[network(rename = "highlightNick", variant = "i32", network)]
highlight_nick: HighlightNickType,
#[network(rename = "nicksCaseSensitive")]
nicks_case_sensitive: bool,
}
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "maplist")]
pub struct HighlightRule {
id: i32,
@@ -56,7 +57,7 @@ impl crate::message::signalproxy::Network for HighlightNickType {
#[cfg(test)]
mod tests {
use super::*;
- use crate::message::signalproxy::translation::Network;
+ use crate::message::signalproxy::translation::NetworkList;
use crate::primitive::{Variant, VariantList};
use pretty_assertions::assert_eq;
@@ -100,13 +101,13 @@ mod tests {
#[test]
fn highlightrulemanager_to_network() {
- assert_eq!(get_runtime().to_network(), get_network())
+ assert_eq!(get_runtime().to_network_list(), get_network())
}
#[test]
fn highlightrulemanager_from_network() {
assert_eq!(
- HighlightRuleManager::from_network(&mut get_network()),
+ HighlightRuleManager::from_network_list(&mut get_network()),
get_runtime()
)
}
diff --git a/src/message/signalproxy/objects/identity.rs b/src/message/signalproxy/objects/identity.rs
index 3c05c87..e173689 100644
--- a/src/message/signalproxy/objects/identity.rs
+++ b/src/message/signalproxy/objects/identity.rs
@@ -1,7 +1,6 @@
-use libquassel_derive::Network;
+use libquassel_derive::NetworkMap;
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "map")]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
pub struct Identity {
#[network(rename = "identityId")]
identity_id: i32,
diff --git a/src/message/signalproxy/objects/ignorelistmanager.rs b/src/message/signalproxy/objects/ignorelistmanager.rs
index f98ed36..a3d9798 100644
--- a/src/message/signalproxy/objects/ignorelistmanager.rs
+++ b/src/message/signalproxy/objects/ignorelistmanager.rs
@@ -1,10 +1,11 @@
-use libquassel_derive::Network;
+use crate::message::signalproxy::translation::{Network, NetworkMap};
+use libquassel_derive::{NetworkList, NetworkMap};
+
use std::convert::TryFrom;
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct IgnoreListManager {
- #[network(rename = "IgnoreList", network, variant = "VariantMap")]
+ #[network(rename = "IgnoreList", variant = "VariantMap", network, map)]
ignore_list: Vec<IgnoreListItem>,
// // C->S calls
@@ -32,7 +33,7 @@ pub struct IgnoreListManager {
// update(properties: QVariantMap)
}
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "maplist")]
pub struct IgnoreListItem {
#[network(rename = "ignoreType", network, type = "u8")]
@@ -76,7 +77,7 @@ impl TryFrom<u8> for IgnoreType {
}
}
-impl super::Network for IgnoreType {
+impl crate::message::signalproxy::Network for IgnoreType {
type Item = u8;
fn to_network(&self) -> Self::Item {
@@ -109,7 +110,7 @@ impl TryFrom<u8> for StrictnessType {
}
}
-impl super::Network for StrictnessType {
+impl crate::message::signalproxy::Network for StrictnessType {
type Item = u8;
fn to_network(&self) -> Self::Item {
@@ -142,7 +143,7 @@ impl TryFrom<u8> for ScopeType {
}
}
-impl super::Network for ScopeType {
+impl crate::message::signalproxy::Network for ScopeType {
type Item = u8;
fn to_network(&self) -> Self::Item {
diff --git a/src/message/signalproxy/objects/ircchannel.rs b/src/message/signalproxy/objects/ircchannel.rs
index ee23f07..16f1f10 100644
--- a/src/message/signalproxy/objects/ircchannel.rs
+++ b/src/message/signalproxy/objects/ircchannel.rs
@@ -2,10 +2,9 @@ use std::collections::HashMap;
use std::convert::TryFrom;
use std::convert::TryInto;
+use crate::message::NetworkMap;
use crate::primitive::{StringList, Variant, VariantList, VariantMap};
-use crate::message::signalproxy::Network;
-
#[allow(dead_code)]
#[derive(Debug, Clone, PartialEq)]
pub struct IrcChannel {
@@ -29,10 +28,10 @@ pub struct IrcChannel {
// D(char),
// }
-impl Network for Vec<IrcChannel> {
+impl NetworkMap for Vec<IrcChannel> {
type Item = VariantMap;
- fn to_network(&self) -> Self::Item {
+ fn to_network_map(&self) -> Self::Item {
let mut channelmodes: VariantList = Vec::with_capacity(self.len());
let mut usermodes: VariantList = Vec::with_capacity(self.len());
let mut name: VariantList = Vec::with_capacity(self.len());
@@ -103,23 +102,23 @@ impl Network for Vec<IrcChannel> {
map
}
- fn from_network(input: &mut Self::Item) -> Self {
+ fn from_network_map(input: &mut Self::Item) -> Self {
let marker: VariantList =
std::convert::TryInto::try_into(input.get("name").unwrap()).unwrap();
let mut res = Vec::new();
for _ in 0..marker.len() {
- res.push(IrcChannel::from_network(input));
+ res.push(IrcChannel::from_network_map(input));
}
return res;
}
}
-impl Network for IrcChannel {
+impl NetworkMap for IrcChannel {
type Item = VariantMap;
- fn to_network(&self) -> Self::Item {
+ fn to_network_map(&self) -> Self::Item {
let mut res = VariantMap::new();
res.insert(
@@ -188,7 +187,7 @@ impl Network for IrcChannel {
res
}
- fn from_network(input: &mut Self::Item) -> Self {
+ fn from_network_map(input: &mut Self::Item) -> Self {
let mut chanmodes: VariantMap = match_variant!(
match_variant!(input.get_mut("ChanModes").unwrap(), Variant::VariantList).remove(0),
Variant::VariantMap
@@ -334,11 +333,14 @@ mod tests {
#[test]
fn ircchannel_to_network() {
- assert_eq!(get_runtime().to_network(), get_network())
+ assert_eq!(get_runtime().to_network_map(), get_network())
}
#[test]
fn ircchannel_from_network() {
- assert_eq!(IrcChannel::from_network(&mut get_network()), get_runtime())
+ assert_eq!(
+ IrcChannel::from_network_map(&mut get_network()),
+ get_runtime()
+ )
}
}
diff --git a/src/message/signalproxy/objects/ircuser.rs b/src/message/signalproxy/objects/ircuser.rs
index 85fea81..6b14c70 100644
--- a/src/message/signalproxy/objects/ircuser.rs
+++ b/src/message/signalproxy/objects/ircuser.rs
@@ -2,10 +2,10 @@ use crate::primitive::{DateTime, StringList};
#[allow(unused_imports)]
use crate::message::signalproxy::Network;
-use libquassel_derive::Network;
+use libquassel_derive::NetworkMap;
#[allow(dead_code)]
-#[derive(Debug, Clone, PartialEq, Network)]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
#[network(repr = "maplist")]
pub struct IrcUser {
pub user: String,
@@ -38,6 +38,7 @@ pub struct IrcUser {
#[cfg(test)]
mod tests {
+ use crate::message::signalproxy::NetworkMap;
use crate::primitive::{Variant, VariantMap};
use time::OffsetDateTime;
@@ -191,16 +192,16 @@ mod tests {
#[test]
fn ircuser_to_network() {
- assert_eq!(get_runtime().to_network(), get_network())
+ assert_eq!(get_runtime().to_network_map(), get_network())
}
#[test]
fn ircuser_from_network() {
- assert_eq!(IrcUser::from_network(&mut get_network()), get_runtime())
+ assert_eq!(IrcUser::from_network_map(&mut get_network()), get_runtime())
}
#[test]
fn vec_ircuser_to_network() {
- assert_eq!(get_runtime().to_network(), get_network())
+ assert_eq!(get_runtime().to_network_map(), get_network())
}
}
diff --git a/src/message/signalproxy/objects/mod.rs b/src/message/signalproxy/objects/mod.rs
index 72737a0..20c78a2 100644
--- a/src/message/signalproxy/objects/mod.rs
+++ b/src/message/signalproxy/objects/mod.rs
@@ -29,7 +29,7 @@ pub use networkinfo::*;
use libquassel_derive::From;
use log::debug;
-use super::{Network, NetworkList};
+use super::{NetworkList, NetworkMap};
use crate::primitive::VariantList;
/// Central Enum containing and identifying all Quassel Protocol Types:
@@ -73,17 +73,17 @@ impl Types {
debug!("converting to network object: {:#?}", self);
match self {
Types::AliasManager(val) => val.to_network_list(),
- Types::BufferSyncer(val) => val.to_network(),
- Types::BufferViewConfig(val) => val.to_network(),
- Types::BufferViewManager(val) => val.to_network(),
- Types::CoreInfo(val) => vec![val.to_network().into()],
- Types::CoreData(val) => vec![val.to_network().into()],
- Types::HighlightRuleManager(val) => val.to_network(),
- Types::IgnoreListManager(val) => val.to_network(),
- Types::CertManager(val) => val.to_network(),
- Types::Network(val) => val.to_network(),
- Types::NetworkInfo(val) => val.to_network(),
- Types::NetworkConfig(val) => val.to_network(),
+ Types::BufferSyncer(val) => val.to_network_list(),
+ Types::BufferViewConfig(val) => val.to_network_list(),
+ Types::BufferViewManager(val) => val.to_network_list(),
+ Types::CoreInfo(val) => vec![val.to_network_map().into()],
+ Types::CoreData(val) => vec![val.to_network_map().into()],
+ Types::HighlightRuleManager(val) => val.to_network_list(),
+ Types::IgnoreListManager(val) => val.to_network_list(),
+ Types::CertManager(val) => val.to_network_list(),
+ Types::Network(val) => val.to_network_list(),
+ Types::NetworkInfo(val) => val.to_network_list(),
+ Types::NetworkConfig(val) => val.to_network_list(),
Types::Unknown(val) => val.clone(),
}
}
@@ -95,23 +95,29 @@ impl Types {
);
match class_name {
"AliasManager" => Types::AliasManager(AliasManager::from_network_list(input)),
- "BufferSyncer" => Types::BufferSyncer(BufferSyncer::from_network(input)),
- "BufferViewConfig" => Types::BufferViewConfig(BufferViewConfig::from_network(input)),
- "BufferViewManager" => Types::BufferViewManager(BufferViewManager::from_network(input)),
- "CoreInfo" => Types::CoreInfo(CoreInfo::from_network(
+ "BufferSyncer" => Types::BufferSyncer(BufferSyncer::from_network_list(input)),
+ "BufferViewConfig" => {
+ Types::BufferViewConfig(BufferViewConfig::from_network_list(input))
+ }
+ "BufferViewManager" => {
+ Types::BufferViewManager(BufferViewManager::from_network_list(input))
+ }
+ "CoreInfo" => Types::CoreInfo(CoreInfo::from_network_map(
&mut input.remove(0).try_into().unwrap(),
)),
- "CoreData" => Types::CoreData(CoreData::from_network(
+ "CoreData" => Types::CoreData(CoreData::from_network_map(
&mut input.remove(0).try_into().unwrap(),
)),
"HighlightRuleManager" => {
- Types::HighlightRuleManager(HighlightRuleManager::from_network(input))
+ Types::HighlightRuleManager(HighlightRuleManager::from_network_list(input))
+ }
+ "IgnoreListManager" => {
+ Types::IgnoreListManager(IgnoreListManager::from_network_list(input))
}
- "IgnoreListManager" => Types::IgnoreListManager(IgnoreListManager::from_network(input)),
- "CertManager" => Types::CertManager(CertManager::from_network(input)),
- "Network" => Types::Network(Network::from_network(input)),
- "NetworkInfo" => Types::NetworkInfo(NetworkInfo::from_network(input)),
- "NetworkConfig" => Types::NetworkConfig(NetworkConfig::from_network(input)),
+ "CertManager" => Types::CertManager(CertManager::from_network_list(input)),
+ "Network" => Types::Network(Network::from_network_list(input)),
+ "NetworkInfo" => Types::NetworkInfo(NetworkInfo::from_network_list(input)),
+ "NetworkConfig" => Types::NetworkConfig(NetworkConfig::from_network_list(input)),
_ => Types::Unknown(input.to_owned()),
}
}
diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs
index cecc412..2fa4c49 100644
--- a/src/message/signalproxy/objects/network.rs
+++ b/src/message/signalproxy/objects/network.rs
@@ -1,14 +1,14 @@
-use std::convert::TryInto;
-
-use crate::primitive::{Variant, VariantList, VariantMap};
-
-use libquassel_derive::Network;
-
use std::collections::HashMap;
+use std::convert::TryInto;
use num_derive::{FromPrimitive, ToPrimitive};
use num_traits::FromPrimitive;
+use libquassel_derive::{NetworkList, NetworkMap};
+
+use crate::message::signalproxy::translation::NetworkMap;
+use crate::primitive::{Variant, VariantList, VariantMap};
+
use super::{ircchannel::IrcChannel, ircuser::IrcUser, networkinfo::NetworkInfo};
#[derive(Debug, Clone, PartialEq)]
@@ -29,11 +29,9 @@ pub struct Network {
network_info: NetworkInfo,
}
-impl crate::message::signalproxy::Network for Network {
- type Item = VariantList;
-
- fn to_network(&self) -> Self::Item {
- let mut res = Self::Item::new();
+impl crate::message::signalproxy::NetworkList for Network {
+ fn to_network_list(&self) -> VariantList {
+ let mut res = VariantList::new();
res.push(Variant::ByteArray(s!("myNick")));
res.push(Variant::String(self.my_nick.clone()));
@@ -78,7 +76,7 @@ impl crate::message::signalproxy::Network for Network {
Variant::VariantMap(self.irc_users.iter().fold(
HashMap::new(),
|mut res, (_, v)| {
- res.extend(v.to_network());
+ res.extend(v.to_network_map());
res
},
@@ -89,7 +87,7 @@ impl crate::message::signalproxy::Network for Network {
.irc_channels
.iter()
.fold(HashMap::new(), |mut res, (_, v)| {
- res.extend(v.to_network());
+ res.extend(v.to_network_map());
res
});
@@ -100,12 +98,12 @@ impl crate::message::signalproxy::Network for Network {
res.push(Variant::VariantMap(map));
}
- res.extend(self.network_info.to_network());
+ res.extend(self.network_info.to_network_list());
res
}
- fn from_network(input: &mut Self::Item) -> Self {
+ fn from_network_list(input: &mut VariantList) -> Self {
let mut i = input.iter().cycle();
let users_and_channels: VariantMap = {
@@ -152,7 +150,7 @@ impl crate::message::signalproxy::Network for Network {
irc_users: {
match users_and_channels.get("Users") {
Some(users) => {
- let users: Vec<IrcUser> = Vec::<IrcUser>::from_network(
+ let users: Vec<IrcUser> = Vec::<IrcUser>::from_network_map(
&mut users.try_into().expect("failed to convert Users"),
);
@@ -168,7 +166,7 @@ impl crate::message::signalproxy::Network for Network {
match users_and_channels.get("Channels") {
Some(channels) => {
let channels: Vec<IrcChannel> =
- Vec::<IrcChannel>::from_network(&mut channels.try_into().unwrap());
+ Vec::<IrcChannel>::from_network_map(&mut channels.try_into().unwrap());
channels
.into_iter()
.map(|channel| (channel.name.clone(), channel))
@@ -205,13 +203,12 @@ impl crate::message::signalproxy::Network for Network {
var.into_iter().map(|v| v.try_into().unwrap()).collect()
},
- network_info: NetworkInfo::from_network(input),
+ network_info: NetworkInfo::from_network_list(input),
}
}
}
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "map")]
+#[derive(Debug, Clone, PartialEq, NetworkMap)]
pub struct NetworkServer {
#[network(rename = "Host")]
pub host: String,
@@ -239,8 +236,7 @@ pub struct NetworkServer {
pub proxy_pass: String,
}
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct NetworkConfig {
#[network(rename = "pingTimeoutEnabled")]
ping_timeout_enabled: bool,
@@ -263,7 +259,6 @@ pub struct NetworkConfig {
#[cfg(test)]
mod tests {
use super::*;
- use crate::message::signalproxy::translation::Network;
fn networkserver_get_network() -> VariantMap {
map! {
@@ -325,7 +320,7 @@ mod tests {
#[test]
fn network_server_to_network() {
assert_eq!(
- networkserver_get_runtime().to_network(),
+ networkserver_get_runtime().to_network_map(),
networkserver_get_network()
)
}
diff --git a/src/message/signalproxy/objects/networkinfo.rs b/src/message/signalproxy/objects/networkinfo.rs
index 49351ad..23a001d 100644
--- a/src/message/signalproxy/objects/networkinfo.rs
+++ b/src/message/signalproxy/objects/networkinfo.rs
@@ -1,16 +1,16 @@
use crate::primitive::StringList;
-use libquassel_derive::Network;
+use libquassel_derive::NetworkList;
use crate::message::objects::network::NetworkServer;
+use crate::message::signalproxy::translation::NetworkMap;
-#[derive(Debug, Clone, PartialEq, Network)]
-#[network(repr = "list")]
+#[derive(Debug, Clone, PartialEq, NetworkList)]
pub struct NetworkInfo {
#[network(rename = "networkName")]
pub network_name: String,
- #[network(rename = "ServerList", network, variant = "VariantList")]
+ #[network(rename = "ServerList", variant = "VariantList", network, map)]
pub server_list: Vec<NetworkServer>,
#[network(rename = "perform")]
pub perform: StringList,
@@ -71,7 +71,7 @@ mod tests {
use crate::primitive::{Variant, VariantList};
use super::*;
- use crate::message::signalproxy::translation::Network;
+ use crate::message::signalproxy::translation::NetworkList;
use pretty_assertions::assert_eq;
@@ -154,11 +154,14 @@ mod tests {
#[test]
fn networkinfo_to_network() {
- assert_eq!(get_runtime().to_network(), get_network())
+ assert_eq!(get_runtime().to_network_list(), get_network())
}
#[test]
fn networkinfo_from_network() {
- assert_eq!(NetworkInfo::from_network(&mut get_network()), get_runtime())
+ assert_eq!(
+ NetworkInfo::from_network_list(&mut get_network()),
+ get_runtime()
+ )
}
}
diff --git a/src/message/signalproxy/translation/mod.rs b/src/message/signalproxy/translation/mod.rs
index 3587ab6..f6bbbb9 100644
--- a/src/message/signalproxy/translation/mod.rs
+++ b/src/message/signalproxy/translation/mod.rs
@@ -84,7 +84,7 @@ VariantMap({
})
```
**/
-use crate::primitive::{VariantList, VariantMap};
+use crate::primitive::VariantList;
pub trait Network {
type Item;
@@ -94,8 +94,10 @@ pub trait Network {
}
pub trait NetworkMap {
- fn to_network_map(&self) -> VariantMap;
- fn from_network_map(input: &mut VariantMap) -> Self;
+ type Item;
+
+ fn to_network_map(&self) -> Self::Item;
+ fn from_network_map(input: &mut Self::Item) -> Self;
}
pub trait NetworkList {