aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-01-04 18:24:00 +0100
committerMax Audron <audron@cocaine.farm>2021-01-04 18:24:00 +0100
commit16d12e4fa250889dfbad480fa502178b7e8b1cfa (patch)
tree9d063acf0a4370305dff7c683cb471b0bdf28a0d /src
parentadd message parsing feature flags (diff)
add more signalproxy objects
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/initrequest.rs8
-rw-r--r--src/message/signalproxy/mod.rs2
-rw-r--r--src/message/signalproxy/objects/aliasmanager.rs66
-rw-r--r--src/message/signalproxy/objects/buffersyncer.rs74
-rw-r--r--src/message/signalproxy/objects/mod.rs10
5 files changed, 120 insertions, 40 deletions
diff --git a/src/message/signalproxy/initrequest.rs b/src/message/signalproxy/initrequest.rs
index def314a..59eee2d 100644
--- a/src/message/signalproxy/initrequest.rs
+++ b/src/message/signalproxy/initrequest.rs
@@ -4,8 +4,8 @@ use crate::{Deserialize, Serialize};
#[derive(Clone, Debug, std::cmp::PartialEq)]
pub struct InitRequest {
- class_name: String,
- object_name: String,
+ pub class_name: String,
+ pub object_name: String,
}
impl Serialize for InitRequest {
@@ -13,8 +13,8 @@ impl Serialize for InitRequest {
let mut res = VariantList::new();
res.push(Variant::i32(MessageType::InitRequest as i32));
- res.push(Variant::StringUTF8(self.class_name.clone()));
- res.push(Variant::StringUTF8(self.object_name.clone()));
+ res.push(Variant::ByteArray(self.class_name.clone()));
+ res.push(Variant::ByteArray(self.object_name.clone()));
res.serialize()
}
diff --git a/src/message/signalproxy/mod.rs b/src/message/signalproxy/mod.rs
index b69c6b0..4e99fb0 100644
--- a/src/message/signalproxy/mod.rs
+++ b/src/message/signalproxy/mod.rs
@@ -3,7 +3,7 @@ use crate::{Deserialize, Serialize};
mod heartbeat;
mod initdata;
mod initrequest;
-mod objects;
+pub mod objects;
mod rpccall;
mod syncmessage;
diff --git a/src/message/signalproxy/objects/aliasmanager.rs b/src/message/signalproxy/objects/aliasmanager.rs
index 7e9cfca..828caaa 100644
--- a/src/message/signalproxy/objects/aliasmanager.rs
+++ b/src/message/signalproxy/objects/aliasmanager.rs
@@ -11,36 +11,36 @@ pub struct Alias {
expansion: String,
}
-// impl AliasManager {
-// /// Client to Server
-// ///
-// /// Replaces all properties of the object with the content of the
-// /// "properties" parameter. This parameter is in network representation.
-// ///
-// fn request_update(self: Self, properties: VariantMap) {
-// self.update(properties);
-// }
-//
-// /// Server to Client
-// fn add_alias(self: Self, name: String, expansion: String) {
-// self.aliases.push(Alias { name, expansion });
-// }
-//
-// /// Server to Client
-// ///
-// /// Replaces all properties of the object with the content of the
-// /// "properties" parameter. This parameter is in network representation.
-// ///
-// fn update(self: Self, properties: VariantMap) {
-// let mut alias: Vec<Alias> = Vec::new();
-//
-// // for (i, name) in match_variant!(properties[&"Aliases".to_string()], Variant::String) {
-// // alias.push(Alias {
-// // name,
-// // expansion: match_variant!(properties["Aliases"], Variant::String)["expansions"][i],
-// // })
-// // }
-//
-// self.aliases = alias
-// }
-// }
+impl AliasManager {
+ /// Client to Server
+ ///
+ /// Replaces all properties of the object with the content of the
+ /// "properties" parameter. This parameter is in network representation.
+ ///
+ fn request_update(self: &mut Self, properties: VariantMap) {
+ self.update(properties);
+ }
+
+ /// Server to Client
+ fn add_alias(self: &mut Self, name: String, expansion: String) {
+ self.aliases.push(Alias { name, expansion });
+ }
+
+ /// Server to Client
+ ///
+ /// Replaces all properties of the object with the content of the
+ /// "properties" parameter. This parameter is in network representation.
+ ///
+ fn update(self: &mut Self, properties: VariantMap) {
+ let mut alias: Vec<Alias> = Vec::new();
+
+ // for (i, name) in match_variant!(properties[&"Aliases".to_string()], Variant::String) {
+ // alias.push(Alias {
+ // name,
+ // expansion: match_variant!(properties["Aliases"], Variant::String)["expansions"][i],
+ // })
+ // }
+
+ self.aliases = alias
+ }
+}
diff --git a/src/message/signalproxy/objects/buffersyncer.rs b/src/message/signalproxy/objects/buffersyncer.rs
new file mode 100644
index 0000000..7ee4ca5
--- /dev/null
+++ b/src/message/signalproxy/objects/buffersyncer.rs
@@ -0,0 +1,74 @@
+use crate::message::signalproxy::MessageType;
+use std::collections::HashMap;
+
+// use default_macro::default;
+// #[default(crate::message::signalproxy::objects::BufferSyncerClient)]
+pub struct BufferSyncer {
+ pub activities: HashMap<u32, MessageType>,
+ pub highlight_counts: HashMap<u32, u32>,
+ pub last_seen_msg: HashMap<u32, u32>,
+ pub marker_line: HashMap<u32, u32>,
+}
+
+pub trait BufferSyncerServer {
+ fn activities(self: &Self) -> &HashMap<u32, MessageType>;
+ fn activities_mut(self: &mut Self) -> &mut HashMap<u32, MessageType>;
+
+ fn highlight_counts(self: &Self) -> &HashMap<u32, u32>;
+ fn highlight_counts_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn last_seen_msg(self: &Self) -> &HashMap<u32, u32>;
+ fn last_seen_msg_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn marker_line(self: &Self) -> &HashMap<u32, u32>;
+ fn marker_line_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn request_mark_buffer_as_read(buffer: u32);
+ fn request_merge_buffers_permanently(buffer1: u32, buffer2: u32);
+ fn request_purge_buffer_ids();
+ fn request_remove_buffer(buffer: u32);
+ fn request_rename_buffer(buffer: u32, new_name: String);
+
+ fn request_set_last_seen_msg(self: &mut Self, buffer: u32, msgid: u32) {
+ self.last_seen_msg_mut().insert(buffer, msgid);
+ }
+
+ fn request_set_marker_line(self: &mut Self, buffer: u32, msgid: u32) {
+ self.marker_line_mut().insert(buffer, msgid);
+ }
+}
+
+pub trait BufferSyncerClient {
+ fn activities(self: &Self) -> &HashMap<u32, MessageType>;
+ fn activities_mut(self: &mut Self) -> &mut HashMap<u32, MessageType>;
+
+ fn highlight_counts(self: &Self) -> &HashMap<u32, u32>;
+ fn highlight_counts_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn last_seen_msg(self: &Self) -> &HashMap<u32, u32>;
+ fn last_seen_msg_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn marker_line(self: &Self) -> &HashMap<u32, u32>;
+ fn marker_line_mut(self: &mut Self) -> &mut HashMap<u32, u32>;
+
+ fn mark_buffer_as_read(buffer: u32);
+ fn merge_buffers_permanently(buffer1: u32, buffer2: u32);
+ fn remove_buffer(buffer: u32);
+ fn rename_buffer(buffer: u32, new_name: String);
+
+ fn set_buffer_activity(self: &mut Self, buffer: u32, activity: MessageType) {
+ self.activities_mut().insert(buffer, activity);
+ }
+
+ fn set_highlight_count(self: &mut Self, buffer: u32, count: u32) {
+ self.highlight_counts_mut().insert(buffer, count);
+ }
+
+ fn set_last_seen_msg(self: &mut Self, buffer: u32, msgid: u32) {
+ self.last_seen_msg_mut().insert(buffer, msgid);
+ }
+
+ fn set_marker_line(self: &mut Self, buffer: u32, msgid: u32) {
+ self.marker_line_mut().insert(buffer, msgid);
+ }
+}
diff --git a/src/message/signalproxy/objects/mod.rs b/src/message/signalproxy/objects/mod.rs
index 14dc42f..a84f6fa 100644
--- a/src/message/signalproxy/objects/mod.rs
+++ b/src/message/signalproxy/objects/mod.rs
@@ -1,5 +1,11 @@
-mod aliasmanager;
-mod backlogmanager;
+// mod aliasmanager;
+// mod backlogmanager;
+
+mod buffersyncer;
+mod identity;
+
+pub use buffersyncer::*;
+pub use identity::*;
pub trait Act {
fn act(self: Self);