aboutsummaryrefslogtreecommitdiff
path: root/src/message/signalproxy/objects/network.rs
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2025-03-01 20:00:02 +0100
committerMax Audron <audron@cocaine.farm>2025-03-01 20:00:02 +0100
commit8447b54b6309cf5ca75ffe101088a833d3b34b1e (patch)
treead8338ad989c8d994a36f9760eaa17fa16abcfef /src/message/signalproxy/objects/network.rs
parentremove old quassel attributes from derive macros (diff)
add UserType implementation for required signalproxy objects
Diffstat (limited to 'src/message/signalproxy/objects/network.rs')
-rw-r--r--src/message/signalproxy/objects/network.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/message/signalproxy/objects/network.rs b/src/message/signalproxy/objects/network.rs
index 9f0150f..693abfe 100644
--- a/src/message/signalproxy/objects/network.rs
+++ b/src/message/signalproxy/objects/network.rs
@@ -11,6 +11,7 @@ use crate::error::ProtocolError;
use crate::message::signalproxy::translation::NetworkMap;
use crate::message::{Class, Syncable};
use crate::primitive::{Variant, VariantList, VariantMap};
+use crate::serialize::{Deserialize, Serialize, UserType};
use super::{ircchannel::IrcChannel, ircuser::IrcUser, networkinfo::NetworkInfo};
@@ -616,6 +617,26 @@ pub struct NetworkServer {
pub proxy_pass: String,
}
+impl UserType for NetworkServer {
+ const NAME: &str = "Network::Server";
+}
+
+impl Serialize for NetworkServer {
+ fn serialize(&self) -> Result<Vec<u8>, crate::ProtocolError> {
+ self.to_network_map().serialize()
+ }
+}
+
+impl Deserialize for NetworkServer {
+ 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)));
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;