aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/objects/buffersyncer.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2021-01-04 18:38:31 +0100
committerMax Audron <audron@cocaine.farm>2021-01-04 18:38:31 +0100
commit0b7c6cf0b129799110d3ef0118e1f2b5697a2068 (patch)
tree9bbb49c7af7feb6fc1aff497e0d577fe31ef11ed /src/message/signalproxy/objects/buffersyncer.rs
parentWIP: function api (diff)
parentadd example program: quasselproxy (diff)
Merge branch 'client'
Diffstat (limited to '')
-rw-r--r--src/message/signalproxy/objects/buffersyncer.rs74
1 files changed, 74 insertions, 0 deletions
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);
+ }
+}