aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/rpccall.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/message/signalproxy/rpccall.rs')
-rw-r--r--src/message/signalproxy/rpccall.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/message/signalproxy/rpccall.rs b/src/message/signalproxy/rpccall.rs
new file mode 100644
index 0000000..748b226
--- /dev/null
+++ b/src/message/signalproxy/rpccall.rs
@@ -0,0 +1,38 @@
+use crate::message::MessageType;
+use crate::primitive::{Variant, VariantList};
+use crate::{Deserialize, Serialize};
+
+#[derive(Clone, Debug, std::cmp::PartialEq)]
+pub struct RpcCall {
+ slot_name: String,
+ 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());
+
+ res.serialize()
+ }
+}
+
+impl Deserialize for RpcCall {
+ fn parse(b: &[std::primitive::u8]) -> Result<(std::primitive::usize, Self), failure::Error> {
+ let (size, mut res) = VariantList::parse(&b)?;
+
+ res.remove(0);
+
+ Ok((
+ size,
+ Self {
+ slot_name: match_variant!(res.remove(0), Variant::StringUTF8),
+ params: res,
+ },
+ ))
+ }
+}
ect'>replace all match_variant instances with try_intoMax Audron-134/+111 the match_variant macro was unclear, unreadable and no longer needed as we have automaticly derived from implementations for all Variant enum fields now 2025-07-27remove old readme.orgMax Audron-35/+0 2025-07-27temporarly fix nested network repr parsing for variant typesMax Audron-39/+39 2025-07-27fix sessioninit message wrongly using NetworkMap to convert a fieldMax Audron-4/+5 2025-03-03update roadmapMax Audron-2/+10 2025-03-01implement rpc callsMax Audron-64/+762 2025-03-01add UserType implementation for required signalproxy objectsMax Audron-13/+131 2025-03-01remove old quassel attributes from derive macrosMax Audron-37/+36 this was used across the different derive macros and already replace by macro specific network and setter attributes. 2025-02-27extend docs and reorganize filesMax Audron-1281/+321 2025-02-26implement NetworkId UserTypeMax Audron-108/+196 2025-02-26implement IdentityIdMax Audron-8/+79 2025-02-26refactor variant deserializationMax Audron-123/+59 2025-02-26refactor deserialize and serializevariant traitMax Audron-90/+80 move stuff around a bit to sepperate it out for deserializevariant 2025-02-26refactor variant serialization codeMax Audron-256/+405 Factored out a lot of the serialization of variants into trait's that have auto impl so code duplication is much reduced 2025-02-26add MsgId and BufferId to objects where neededMax Audron-141/+157 some objects where still handling BufferId or MsgId as their raw types which lead to errors now that the Types are properly parsed in the varinats 2025-02-25enable transparent repr for msgid and bufferidMax Audron-0/+2 2025-02-25Implement BacklogManagerTobias Deiminger-59/+113 2025-02-25Use BufferId in BufferInfoTobias Deiminger-10/+11 2025-02-25Use BufferId in VariantTobias Deiminger-2/+33 2025-02-25Add BufferId as Rust typeTobias Deiminger-0/+39 Up to now it was represented as i32. If we introduce a newtype for it, we can handle it idiomatically as dedicated Variant::BufferId variant (instead of having it mashed into Variant::UserType). 2025-02-25Use MsgId in MessageTobias Deiminger-18/+6 2025-02-25Use MsgId in VariantTobias Deiminger-20/+37 2025-02-25Add MsgId as Rust typeTobias Deiminger-0/+56 Up to now it was handled implicitely in Variant::UserType. Making it an explicit type allows to centralize the i32/i64 cfg dependency and to use the type for arguments in signalproxy::objects functions. 2025-02-24added session manager comments and log messageMax Audron-1/+3 2025-02-23add identity syncable to SessionManagerMax Audron-1/+8 2025-02-23add syncables for IrcUserMax Audron-2/+53 2025-02-23move network config to it's own file and impl it's syncMax Audron-23/+84 2025-02-23add basic network syncablesMax Audron-39/+420 2025-02-23clean up unused_import and unused_variables a bitMax Audron-2/+8 2025-02-23fix server feature errorsMax Audron-28/+23 2025-02-23fix ircchannel and maplist network representationMax Audron-154/+137 2025-02-22replace deprecated failure crate with thiserrorMax Audron-278/+194 this changes the public API in that all our methods now return a proper ProtocolError crate. Needed change anyways to properly deal with all our errors in the long run. Will still need to do a pass through the crate to remove all existing unwraps where it makes sense. 2025-02-22update dependencies and fix errorsMax Audron-508/+332 2025-02-22update flakeMax Audron-94/+117 2024-05-22add todos to readmeMax Audron-16/+35