diff options
| author | Max Audron <audron@cocaine.farm> | 2021-10-03 12:39:06 +0200 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2021-10-03 12:39:06 +0200 |
| commit | 2e7f1ee492be200fe2fe1b6204d471adec1d656b (patch) | |
| tree | 4bcd3ec610fd68cb4670fc274a8c7a8fd9af7261 /src/message/signalproxy/objects | |
| parent | statetracker: remove druid-widget-nursery (diff) | |
split StatefulSyncable into client and server side traits
This allows to more easily put each side behind a feature flag,
maintaing ease of use when only one is selected, while
still allowing a consumer to enable both sides and use them.
Diffstat (limited to 'src/message/signalproxy/objects')
| -rw-r--r-- | src/message/signalproxy/objects/aliasmanager.rs | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/src/message/signalproxy/objects/aliasmanager.rs b/src/message/signalproxy/objects/aliasmanager.rs index d696aae..61a68ce 100644 --- a/src/message/signalproxy/objects/aliasmanager.rs +++ b/src/message/signalproxy/objects/aliasmanager.rs @@ -1,10 +1,16 @@ -use std::convert::TryInto; +use std::convert::TryFrom; use libquassel_derive::{NetworkList, NetworkMap}; -use crate::message::{StatefulSyncable, SyncProxy, Syncable}; +#[allow(unused_imports)] +use crate::message::StatefulSyncableClient; +#[allow(unused_imports)] +use crate::message::StatefulSyncableServer; + +use crate::message::{SyncProxy, Syncable}; use crate::message::signalproxy::translation::NetworkMap; +use crate::primitive::VariantMap; /// AliasManager /// keeps a list of all registered aliases @@ -22,28 +28,33 @@ impl AliasManager { self.aliases.push(alias) } } +} - pub fn handle_syncmessage( - &mut self, - session: impl SyncProxy, - msg: crate::message::SyncMessage, - ) { +#[cfg(feature = "client")] +impl StatefulSyncableClient for AliasManager {} + +#[cfg(feature = "server")] +impl StatefulSyncableServer for AliasManager { + fn sync_custom(&mut self, _session: impl SyncProxy, mut msg: crate::message::SyncMessage) + where + Self: Sized, + { 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()) - } + "addAlias" => self.add_alias(Alias::from_network_map( + &mut VariantMap::try_from(msg.params.pop().unwrap()).unwrap(), + )), _ => (), } } } -impl StatefulSyncable for AliasManager {} impl Syncable for AliasManager { - fn sync(&self, session: impl SyncProxy, function: &str, params: crate::primitive::VariantList) { + fn send_sync( + &self, + session: impl SyncProxy, + function: &str, + params: crate::primitive::VariantList, + ) { session.sync("AliasManager", None, function, params) } } |
