diff options
| author | Max Audron <me@audron.dev> | 2026-02-22 14:06:16 +0100 |
|---|---|---|
| committer | Max Audron <me@audron.dev> | 2026-02-22 14:06:16 +0100 |
| commit | 024eb3df4a0786a92033baea123aa779998cdc28 (patch) | |
| tree | 412670a982455cb3351c199b7df21b0b22f3a36e /src/message/signalproxy/objects/buffersyncer.rs | |
| parent | Syncable trait error handling (diff) | |
NetworkList and signalproxy objects error handling
Diffstat (limited to 'src/message/signalproxy/objects/buffersyncer.rs')
| -rw-r--r-- | src/message/signalproxy/objects/buffersyncer.rs | 107 |
1 files changed, 66 insertions, 41 deletions
diff --git a/src/message/signalproxy/objects/buffersyncer.rs b/src/message/signalproxy/objects/buffersyncer.rs index 22a435d..5e8b8e7 100644 --- a/src/message/signalproxy/objects/buffersyncer.rs +++ b/src/message/signalproxy/objects/buffersyncer.rs @@ -1,9 +1,9 @@ use std::collections::HashMap; use crate::{ - error::ProtocolError, message::{Class, Syncable}, primitive::{BufferId, MessageType, MsgId}, + Result, }; use libquassel_derive::{sync, NetworkList, NetworkMap}; @@ -21,45 +21,48 @@ pub struct BufferSyncer { } impl BufferSyncer { - pub fn request_mark_buffer_as_read(&mut self, id: i32) { - sync!("requestMarkBufferAsRead", [id]); + pub fn request_mark_buffer_as_read(&mut self, id: i32) -> Result<()> { + sync!("requestMarkBufferAsRead", [id]) } - pub fn request_merge_buffers_permanently(&self, src_id: i32, target_id: i32) { - sync!("requestMergeBuffersPermanently", [src_id, target_id]); + pub fn request_merge_buffers_permanently(&self, src_id: i32, target_id: i32) -> Result<()> { + sync!("requestMergeBuffersPermanently", [src_id, target_id]) } - pub fn request_purge_buffer_ids(&self) { - sync!("requestPurgeBufferIds", []); + pub fn request_purge_buffer_ids(&self) -> Result<()> { + sync!("requestPurgeBufferIds", []) } - pub fn request_remove_buffer(&self, id: i32) { - sync!("requestRemoveBuffer", [id]); + pub fn request_remove_buffer(&self, id: i32) -> Result<()> { + sync!("requestRemoveBuffer", [id]) } - pub fn request_rename_buffer(&self, id: i32) { - sync!("requestRenameBuffer", [id]); + pub fn request_rename_buffer(&self, id: i32) -> Result<()> { + sync!("requestRenameBuffer", [id]) } - pub fn request_set_last_seen_msg(&self, id: i32, msgid: i32) { - sync!("requestSetLastSeenMsg", [id, msgid]); + pub fn request_set_last_seen_msg(&self, id: i32, msgid: i32) -> Result<()> { + sync!("requestSetLastSeenMsg", [id, msgid]) } - pub fn request_set_marker_line(&self, id: i32, msgid: i32) { - sync!("requestSetMarkerLine", [id, msgid]); + pub fn request_set_marker_line(&self, id: i32, msgid: i32) -> Result<()> { + sync!("requestSetMarkerLine", [id, msgid]) } // // S->C calls - pub fn mark_buffer_as_read(&mut self, id: BufferId) { - self.set_buffer_activity(id, MessageType::NONE); - self.set_highlight_count(id, 0); + pub fn mark_buffer_as_read(&mut self, id: BufferId) -> Result<()> { + self.set_buffer_activity(id, MessageType::NONE)?; + self.set_highlight_count(id, 0)?; #[cfg(feature = "server")] - sync!("markBufferAsRead", [id]); + return sync!("markBufferAsRead", [id]); + + #[cfg(feature = "client")] + return Ok(()); } - pub fn merge_buffers_permanently(&mut self, target: BufferId, source: BufferId) { + pub fn merge_buffers_permanently(&mut self, target: BufferId, source: BufferId) -> Result<()> { if let Some(activities) = self.activities.remove(&source) { *self.activities.entry(target).or_insert(MessageType::NONE) |= activities; } @@ -83,60 +86,81 @@ impl BufferSyncer { } #[cfg(feature = "server")] - sync!("mergeBuffersPermanently", [source, target]); + return sync!("mergeBuffersPermanently", [source, target]); + + #[cfg(feature = "client")] + return Ok(()); } // TODO remove buffer from bufferviews - pub fn remove_buffer(&mut self, id: BufferId) { + pub fn remove_buffer(&mut self, id: BufferId) -> Result<()> { self.activities.remove(&id); self.highlight_counts.remove(&id); self.last_seen_msg.remove(&id); self.marker_line.remove(&id); #[cfg(feature = "server")] - sync!("removeBuffer", [id]); + return sync!("removeBuffer", [id]); + + #[cfg(feature = "client")] + return Ok(()); } // TODO actually rename the buffer in whereever we should store buffers // and the BufferView #[allow(unused_variables)] - pub fn rename_buffer(&mut self, id: i32, name: String) { + pub fn rename_buffer(&mut self, id: i32, name: String) -> Result<()> { #[cfg(feature = "server")] - sync!("renameBuffer", [id, name]); + return sync!("renameBuffer", [id, name]); + + #[cfg(feature = "client")] + return Ok(()); } - pub fn set_buffer_activity(&mut self, id: BufferId, activity: MessageType) { + pub fn set_buffer_activity(&mut self, id: BufferId, activity: MessageType) -> Result<()> { *self.activities.entry(id).or_insert(MessageType::NONE) = activity; #[cfg(feature = "server")] - sync!("setBufferActivity", [id, activity.bits()]); + return sync!("setBufferActivity", [id, activity.bits()]); + + #[cfg(feature = "client")] + return Ok(()); } - pub fn set_highlight_count(&mut self, id: BufferId, count: i32) { + pub fn set_highlight_count(&mut self, id: BufferId, count: i32) -> Result<()> { *self.highlight_counts.entry(id).or_default() = count; #[cfg(feature = "server")] - sync!("setHighlightCount", [id, count]); + return sync!("setHighlightCount", [id, count]); + + #[cfg(feature = "client")] + return Ok(()); } - pub fn set_last_seen_msg(&mut self, id: BufferId, msg_id: MsgId) { + pub fn set_last_seen_msg(&mut self, id: BufferId, msg_id: MsgId) -> Result<()> { *self.last_seen_msg.entry(id).or_default() = msg_id; #[cfg(feature = "server")] - sync!("setHighlightCount", [id, msg_id]); + return sync!("setHighlightCount", [id, msg_id]); + + #[cfg(feature = "client")] + return Ok(()); } - pub fn set_marker_line(&mut self, id: BufferId, msg_id: MsgId) { + pub fn set_marker_line(&mut self, id: BufferId, msg_id: MsgId) -> Result<()> { *self.marker_line.entry(id).or_default() = msg_id; #[cfg(feature = "server")] - sync!("setHighlightCount", [id, msg_id]); + return sync!("setHighlightCount", [id, msg_id]); + + #[cfg(feature = "client")] + return Ok(()); } } #[cfg(feature = "client")] impl crate::message::StatefulSyncableClient for BufferSyncer { - fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<(), ProtocolError> + fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<()> where Self: Sized, { @@ -152,15 +176,14 @@ impl crate::message::StatefulSyncableClient for BufferSyncer { "setHighlightCount" => self.set_highlight_count(get_param!(msg), get_param!(msg)), "setLastSeenMsg" => self.set_last_seen_msg(get_param!(msg), get_param!(msg)), "setMarkerLine" => self.set_marker_line(get_param!(msg), get_param!(msg)), - _ => (), + _ => Ok(()), } - Ok(()) } } #[cfg(feature = "server")] impl crate::message::StatefulSyncableServer for BufferSyncer { - fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<(), ProtocolError> + fn sync_custom(&mut self, mut msg: crate::message::SyncMessage) -> Result<()> where Self: Sized, { @@ -169,14 +192,13 @@ impl crate::message::StatefulSyncableServer for BufferSyncer { "requestMergeBuffersPermanently" => { self.merge_buffers_permanently(get_param!(msg), get_param!(msg)) } - "requestPurgeBufferIds" => (), + "requestPurgeBufferIds" => Ok(()), "requestRemoveBuffer" => self.remove_buffer(get_param!(msg)), "requestRenameBuffer" => self.rename_buffer(get_param!(msg), get_param!(msg)), "requestSetLastSeenMsg" => self.set_last_seen_msg(get_param!(msg), get_param!(msg)), "requestSetMarkerLine" => self.set_marker_line(get_param!(msg), get_param!(msg)), - _ => (), + _ => Ok(()), } - Ok(()) } } @@ -289,6 +311,9 @@ mod tests { #[test] fn buffersyncer_from_network() { - assert_eq!(BufferSyncer::from_network_list(&mut get_network()), get_runtime()) + assert_eq!( + BufferSyncer::from_network_list(&mut get_network()).unwrap(), + get_runtime() + ) } } |
