aboutsummaryrefslogtreecommitdiff
path: root/examples/statetracker/src/server.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-09-28 17:57:08 +0200
committerMax Audron <audron@cocaine.farm>2021-09-28 18:15:50 +0200
commite72c83710442ec57410c4a523e003fdd37d3ffd8 (patch)
tree5760714679d446c60d326564aa6df5566fb1fdf6 /examples/statetracker/src/server.rs
parentstatetracker: first iteration of working rpc object (diff)
statetracker: cleanup code
Diffstat (limited to '')
-rw-r--r--examples/statetracker/src/server.rs31
1 files changed, 24 insertions, 7 deletions
diff --git a/examples/statetracker/src/server.rs b/examples/statetracker/src/server.rs
index ac9c550..6d56662 100644
--- a/examples/statetracker/src/server.rs
+++ b/examples/statetracker/src/server.rs
@@ -1,16 +1,19 @@
use anyhow::{bail, Error};
+use std::convert::TryFrom;
+
use druid::{
widget::{
Align, Button, Checkbox, Container, Controller, ControllerHost, Flex, Label, TextBox,
},
- Command, Data, ExtEventSink, Lens, Target, Widget, WidgetExt,
+ Command, Data, ExtEventSink, Lens, SingleUse, Target, Widget, WidgetExt,
};
use libquassel::{
deserialize::Deserialize,
frame::QuasselCodec,
message::{self, objects, ConnAck, HandshakeMessage, Init},
+ primitive::VariantMap,
};
use futures::{
@@ -130,7 +133,7 @@ impl Server {
.unwrap(),
};
- ctx.submit_command(command::ADD_MESSAGE, msg, Target::Global)
+ ctx.submit_command(command::ADD_MESSAGE, SingleUse::new(msg), Target::Global)
.unwrap();
}
}
@@ -170,16 +173,30 @@ impl Server {
match message::Message::parse(buf) {
Ok((_size, res)) => {
+ let re = res.clone();
+
#[allow(unused_variables)]
- match &res {
- message::Message::SyncMessage(msg) => (),
+ match res {
+ message::Message::SyncMessage(msg) => match msg.class_name.as_str() {
+ "AliasManager" => match msg.slot_name.as_str() {
+ "update" => ctx
+ .submit_command(
+ command::ALIASMANAGER_UPDATE,
+ SingleUse::new(msg),
+ Target::Global,
+ )
+ .unwrap(),
+ _ => (),
+ },
+ _ => (),
+ },
message::Message::RpcCall(msg) => (),
message::Message::InitRequest(msg) => (),
- message::Message::InitData(msg) => match &msg.init_data {
+ message::Message::InitData(msg) => match msg.init_data {
objects::Types::AliasManager(alias_manager) => ctx
.submit_command(
command::ALIASMANAGER_INIT,
- alias_manager.clone(),
+ SingleUse::new(alias_manager),
Target::Global,
)
.unwrap(),
@@ -189,7 +206,7 @@ impl Server {
message::Message::HeartBeatReply(msg) => (),
}
- return Ok(Message::SignalProxy(res));
+ return Ok(Message::SignalProxy(re));
}
Err(e) => {
bail!("failed to parse message {}", e);