From 16d12e4fa250889dfbad480fa502178b7e8b1cfa Mon Sep 17 00:00:00 2001 From: Max Audron Date: Mon, 4 Jan 2021 18:24:00 +0100 Subject: add more signalproxy objects --- src/message/signalproxy/objects/buffersyncer.rs | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/message/signalproxy/objects/buffersyncer.rs (limited to 'src/message/signalproxy/objects/buffersyncer.rs') 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, + pub highlight_counts: HashMap, + pub last_seen_msg: HashMap, + pub marker_line: HashMap, +} + +pub trait BufferSyncerServer { + fn activities(self: &Self) -> &HashMap; + fn activities_mut(self: &mut Self) -> &mut HashMap; + + fn highlight_counts(self: &Self) -> &HashMap; + fn highlight_counts_mut(self: &mut Self) -> &mut HashMap; + + fn last_seen_msg(self: &Self) -> &HashMap; + fn last_seen_msg_mut(self: &mut Self) -> &mut HashMap; + + fn marker_line(self: &Self) -> &HashMap; + fn marker_line_mut(self: &mut Self) -> &mut HashMap; + + 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; + fn activities_mut(self: &mut Self) -> &mut HashMap; + + fn highlight_counts(self: &Self) -> &HashMap; + fn highlight_counts_mut(self: &mut Self) -> &mut HashMap; + + fn last_seen_msg(self: &Self) -> &HashMap; + fn last_seen_msg_mut(self: &mut Self) -> &mut HashMap; + + fn marker_line(self: &Self) -> &HashMap; + fn marker_line_mut(self: &mut Self) -> &mut HashMap; + + 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); + } +} -- cgit v1.2.3