diff options
| author | Max Audron <audron@cocaine.farm> | 2025-03-01 20:00:02 +0100 |
|---|---|---|
| committer | Max Audron <audron@cocaine.farm> | 2025-03-01 20:00:02 +0100 |
| commit | 8447b54b6309cf5ca75ffe101088a833d3b34b1e (patch) | |
| tree | ad8338ad989c8d994a36f9760eaa17fa16abcfef /src/message/signalproxy/objects/ircchannel.rs | |
| parent | remove old quassel attributes from derive macros (diff) | |
add UserType implementation for required signalproxy objects
Diffstat (limited to 'src/message/signalproxy/objects/ircchannel.rs')
| -rw-r--r-- | src/message/signalproxy/objects/ircchannel.rs | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/message/signalproxy/objects/ircchannel.rs b/src/message/signalproxy/objects/ircchannel.rs index 857af51..9ca3474 100644 --- a/src/message/signalproxy/objects/ircchannel.rs +++ b/src/message/signalproxy/objects/ircchannel.rs @@ -5,8 +5,9 @@ use libquassel_derive::sync; use libquassel_derive::{NetworkList, NetworkMap, Setters}; use log::{error, warn}; -use crate::message::{Class, Syncable}; -use crate::primitive::StringList; +use crate::message::{signalproxy::translation::NetworkMap, Class, Syncable}; +use crate::primitive::{StringList, VariantMap}; +use crate::serialize::{Deserialize, Serialize, UserType}; use super::{ChanModes, ChannelModeType}; @@ -30,6 +31,26 @@ pub struct IrcChannel { pub encrypted: bool, } +impl UserType for IrcChannel { + const NAME: &str = "IrcChannel"; +} + +impl Serialize for IrcChannel { + fn serialize(&self) -> Result<Vec<u8>, crate::ProtocolError> { + self.to_network_map().serialize() + } +} + +impl Deserialize for IrcChannel { + fn parse(b: &[u8]) -> Result<(usize, Self), crate::ProtocolError> + where + Self: std::marker::Sized, + { + let (vlen, mut value) = VariantMap::parse(b)?; + return Ok((vlen, Self::from_network_map(&mut value))); + } +} + // TODO keep user modes sorted impl IrcChannel { pub fn add_channel_mode(&mut self, mode_type: ChannelModeType, mode: char, value: String) { |
