From 8447b54b6309cf5ca75ffe101088a833d3b34b1e Mon Sep 17 00:00:00 2001 From: Max Audron Date: Sat, 1 Mar 2025 20:00:02 +0100 Subject: add UserType implementation for required signalproxy objects --- src/message/signalproxy/objects/identity.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/message/signalproxy/objects/identity.rs') diff --git a/src/message/signalproxy/objects/identity.rs b/src/message/signalproxy/objects/identity.rs index 0a2aaf8..6aa9830 100644 --- a/src/message/signalproxy/objects/identity.rs +++ b/src/message/signalproxy/objects/identity.rs @@ -13,6 +13,10 @@ use crate::message::Syncable; #[allow(unused_imports)] use crate::message::signalproxy::translation::NetworkMap; use crate::primitive::IdentityId; +use crate::primitive::VariantMap; +use crate::serialize::Deserialize; +use crate::serialize::Serialize; +use crate::serialize::UserType; #[derive(Default, Debug, Clone, PartialEq, NetworkMap, NetworkList, Setters)] pub struct Identity { @@ -61,6 +65,26 @@ pub struct Identity { pub quit_reason: String, } +impl UserType for Identity { + const NAME: &str = "Identity"; +} + +impl Serialize for Identity { + fn serialize(&self) -> Result, crate::ProtocolError> { + self.to_network_map().serialize() + } +} + +impl Deserialize for Identity { + 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))); + } +} + impl Identity { pub fn copy_from(&mut self, other: Identity) { #[cfg(feature = "server")] -- cgit v1.2.3