diff options
Diffstat (limited to 'src/message/signalproxy/objects/network.rs')
| -rw-r--r-- | src/message/signalproxy/objects/network.rs | 21 |
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::*; |
