aboutsummaryrefslogtreecommitdiff
path: root/src/message
diff options
context:
space:
mode:
authorMax Audron <audron@cocaine.farm>2025-02-26 22:52:16 +0100
committerMax Audron <audron@cocaine.farm>2025-02-26 22:58:03 +0100
commita130eee7a71996f9ae50502c477a2c6494b78a83 (patch)
tree39d5e659ad1d537728757aa542968cb49b06bd35 /src/message
parentimplement IdentityId (diff)
implement NetworkId UserType
Diffstat (limited to 'src/message')
-rw-r--r--src/message/handshake/sessioninit.rs8
-rw-r--r--src/message/signalproxy/objects/bufferviewconfig.rs4
-rw-r--r--src/message/signalproxy/objects/networkinfo.rs21
3 files changed, 23 insertions, 10 deletions
diff --git a/src/message/handshake/sessioninit.rs b/src/message/handshake/sessioninit.rs
index 048324d..52e59ae 100644
--- a/src/message/handshake/sessioninit.rs
+++ b/src/message/handshake/sessioninit.rs
@@ -1,6 +1,6 @@
use crate::error::ProtocolError;
use crate::message::objects::Identity;
-use crate::primitive::{BufferInfo, Variant, VariantMap};
+use crate::primitive::{BufferInfo, NetworkId, Variant, VariantMap};
use crate::HandshakeSerialize;
/// SessionInit is received along with ClientLoginAck to initialize that user Session
@@ -12,7 +12,7 @@ pub struct SessionInit {
/// List of all existing buffers
pub buffers: Vec<BufferInfo>,
/// Ids of all networks
- pub network_ids: Vec<i32>,
+ pub network_ids: Vec<NetworkId>,
}
impl From<VariantMap> for SessionInit {
@@ -36,7 +36,7 @@ impl From<VariantMap> for SessionInit {
network_ids: match_variant!(state.get("NetworkIds").unwrap(), Variant::VariantList)
.iter()
.map(|network| match network {
- Variant::i32(network) => network.clone(),
+ Variant::NetworkId(network) => network.clone(),
_ => unimplemented!(),
})
.collect(),
@@ -71,7 +71,7 @@ impl HandshakeSerialize for SessionInit {
Variant::VariantList(
self.network_ids
.iter()
- .map(|id| Variant::i32(id.clone()))
+ .map(|id| Variant::NetworkId(id.clone()))
.collect(),
),
);
diff --git a/src/message/signalproxy/objects/bufferviewconfig.rs b/src/message/signalproxy/objects/bufferviewconfig.rs
index a31ec92..8ca6b82 100644
--- a/src/message/signalproxy/objects/bufferviewconfig.rs
+++ b/src/message/signalproxy/objects/bufferviewconfig.rs
@@ -7,7 +7,7 @@ use crate::message::StatefulSyncableClient;
use crate::message::StatefulSyncableServer;
use crate::message::{Class, Syncable};
-use crate::primitive::{BufferId, VariantList};
+use crate::primitive::{BufferId, NetworkId, VariantList};
#[derive(Debug, Default, Clone, PartialEq, NetworkList, NetworkMap)]
pub struct BufferViewConfig {
@@ -27,7 +27,7 @@ pub struct BufferViewConfig {
#[network(rename = "bufferViewName")]
pub buffer_view_name: String,
#[network(rename = "networkId")]
- pub network_id: i32,
+ pub network_id: NetworkId,
#[network(rename = "addNewBuffersAutomatically")]
pub add_new_buffers_automatically: bool,
#[network(rename = "sortAlphabetically")]
diff --git a/src/message/signalproxy/objects/networkinfo.rs b/src/message/signalproxy/objects/networkinfo.rs
index b3b2a4d..4cdf8d7 100644
--- a/src/message/signalproxy/objects/networkinfo.rs
+++ b/src/message/signalproxy/objects/networkinfo.rs
@@ -1,6 +1,6 @@
use crate::{
message::{Class, Syncable},
- primitive::{IdentityId, StringList},
+ primitive::{IdentityId, NetworkId, StringList},
};
use libquassel_derive::{NetworkList, NetworkMap, Setters};
@@ -37,7 +37,8 @@ pub struct NetworkInfo {
pub codec_for_decoding: String,
// TODO add these type aliases or usertypes in variants
- // pub network_id: NetworkId,
+ #[network(rename = "networkId", default)]
+ pub network_id: NetworkId,
#[network(rename = "identityId")]
pub identity_id: IdentityId,
#[network(rename = "msgRateBurstSize")]
@@ -119,6 +120,8 @@ mod tests {
Variant::ByteArray(s!("")),
Variant::ByteArray(s!("codecForDecoding")),
Variant::ByteArray(s!("")),
+ Variant::ByteArray(s!("networkId")),
+ Variant::NetworkId(NetworkId(5)),
Variant::ByteArray(s!("identityId")),
Variant::IdentityId(IdentityId(0)),
Variant::ByteArray(s!("msgRateBurstSize")),
@@ -151,6 +154,7 @@ mod tests {
fn get_runtime() -> NetworkInfo {
NetworkInfo {
identity_id: IdentityId(0),
+ network_id: NetworkId(5),
network_name: s!("snoonet"),
server_list: vec![],
perform: vec![s!("")],
@@ -179,11 +183,20 @@ mod tests {
#[test]
fn networkinfo_to_network() {
- assert_eq!(get_runtime().to_network_list(), get_network())
+ assert_eq!(get_runtime().to_network_list(), get_network());
+ assert_eq!(get_runtime().to_network_list(), get_network());
}
#[test]
fn networkinfo_from_network() {
- assert_eq!(NetworkInfo::from_network_list(&mut get_network()), get_runtime())
+ assert_eq!(NetworkInfo::from_network_list(&mut get_network()), get_runtime());
+
+ // Test serialization without given network id
+ let mut network = get_network();
+ network.remove(20);
+ network.remove(20);
+
+ let left = NetworkInfo::from_network_list(&mut network);
+ assert_eq!(left.network_id, NetworkId(0));
}
}