aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/rpccall.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2020-10-16 21:58:05 +0200
committerMax Audron <audron@cocaine.farm>2020-10-16 21:58:05 +0200
commitfd943651195a970aac2b066e3bdbb23253f73ce7 (patch)
tree09af5399dcd96b8f525412798b7e6e8719f3e55e /src/message/signalproxy/rpccall.rs
parentupdate paperwork (diff)
update
Diffstat (limited to 'src/message/signalproxy/rpccall.rs')
-rw-r--r--src/message/signalproxy/rpccall.rs45
1 files changed, 33 insertions, 12 deletions
diff --git a/src/message/signalproxy/rpccall.rs b/src/message/signalproxy/rpccall.rs
index 748b226..2eac86d 100644
--- a/src/message/signalproxy/rpccall.rs
+++ b/src/message/signalproxy/rpccall.rs
@@ -1,21 +1,36 @@
use crate::message::MessageType;
+use crate::primitive::Message;
use crate::primitive::{Variant, VariantList};
use crate::{Deserialize, Serialize};
#[derive(Clone, Debug, std::cmp::PartialEq)]
-pub struct RpcCall {
- slot_name: String,
- params: VariantList,
+pub enum RpcCall {
+ DisplayMessage(DisplayMessage),
}
+#[derive(Clone, Debug, std::cmp::PartialEq)]
+pub struct DisplayMessage {
+ pub message: Message,
+}
+
+// #[derive(Clone, Debug, std::cmp::PartialEq)]
+// pub struct RpcCall {
+// pub slot_name: String,
+// pub params: VariantList,
+// }
+
impl Serialize for RpcCall {
fn serialize(&self) -> Result<Vec<std::primitive::u8>, failure::Error> {
let mut res = VariantList::new();
res.push(Variant::i32(MessageType::RpcCall as i32));
- res.push(Variant::StringUTF8(self.slot_name.clone()));
- res.append(&mut self.params.clone());
+ match self {
+ RpcCall::DisplayMessage(msg) => {
+ res.push(Variant::StringUTF8("2displayMsg(Message)".to_string()));
+ res.push(Variant::Message(msg.message.clone()));
+ }
+ }
res.serialize()
}
@@ -27,12 +42,18 @@ impl Deserialize for RpcCall {
res.remove(0);
- Ok((
- size,
- Self {
- slot_name: match_variant!(res.remove(0), Variant::StringUTF8),
- params: res,
- },
- ))
+ let rpc = match_variant!(res.remove(0), Variant::StringUTF8);
+
+ match rpc.as_str() {
+ "2displayMsg(Message)" => {
+ return Ok((
+ size,
+ RpcCall::DisplayMessage(DisplayMessage {
+ message: match_variant!(res.remove(0), Variant::Message),
+ }),
+ ))
+ }
+ _ => unimplemented!(),
+ }
}
}