aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-09-28 18:12:51 +0200
committerMax Audron <audron@cocaine.farm>2021-09-28 18:16:20 +0200
commit31072bbcde7eb70e84d4f2f3532928dc78f4ced8 (patch)
tree59512836756e8a2a476266192d7d22262314c5f6 /src/message/signalproxy
parentmake initdata fields public (diff)
add handle_syncmessage to aliasmanager
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/aliasmanager.rs27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/message/signalproxy/objects/aliasmanager.rs b/src/message/signalproxy/objects/aliasmanager.rs
index 2a29865..61da289 100644
--- a/src/message/signalproxy/objects/aliasmanager.rs
+++ b/src/message/signalproxy/objects/aliasmanager.rs
@@ -1,8 +1,10 @@
+use std::convert::TryInto;
+
use libquassel_derive::{Network, NetworkList, NetworkMap};
use crate::message::{StatefulSyncable, SyncProxy, Syncable};
-use crate::message::signalproxy::translation::Network;
+use crate::message::signalproxy::translation::{Network, NetworkMap};
use crate::primitive::{VariantList, VariantMap};
/// AliasManager
@@ -22,6 +24,23 @@ impl AliasManager {
self.aliases.push(alias)
}
}
+
+ pub fn handle_syncmessage(
+ &mut self,
+ session: impl SyncProxy,
+ msg: crate::message::SyncMessage,
+ ) {
+ match msg.slot_name.as_str() {
+ "requestUpdate" => {
+ self.request_update(session, msg.params.get(0).unwrap().try_into().unwrap())
+ }
+ "update" => {
+ *self =
+ AliasManager::from_network_map(&mut msg.params[0].clone().try_into().unwrap())
+ }
+ _ => (),
+ }
+ }
}
impl StatefulSyncable for AliasManager {}
@@ -37,15 +56,15 @@ impl Syncable for AliasManager {
#[network(repr = "maplist")]
pub struct Alias {
#[network(rename = "names", variant = "StringList")]
- name: String,
+ pub name: String,
#[network(rename = "expansions", variant = "StringList")]
- expansion: String,
+ pub expansion: String,
}
#[cfg(test)]
mod tests {
use super::*;
- use crate::message::signalproxy::translation::Network;
+ use crate::message::signalproxy::translation::NetworkList;
use crate::primitive::{Variant, VariantList};