From 08bb66fbae3dd5d4e9380564359686ccd90ba180 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski <janne@kuschku.de> Date: Wed, 17 Feb 2021 00:26:09 +0100 Subject: [PATCH] Cleanup session init code --- .../protocol/models/HandshakeMessage.kt | 5 ++-- .../handshake/SessionInitSerializer.kt | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/models/HandshakeMessage.kt b/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/models/HandshakeMessage.kt index 87d7b95..2f44ba1 100644 --- a/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/models/HandshakeMessage.kt +++ b/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/models/HandshakeMessage.kt @@ -11,6 +11,7 @@ package de.justjanne.libquassel.protocol.models import de.justjanne.libquassel.protocol.features.FeatureSet +import de.justjanne.libquassel.protocol.models.ids.NetworkId import de.justjanne.libquassel.protocol.variant.QVariantList import de.justjanne.libquassel.protocol.variant.QVariantMap @@ -190,13 +191,13 @@ sealed class HandshakeMessage { * Buffers created or deleted after [SessionInit] will be defined via RPC * messages */ - val bufferInfos: QVariantList?, + val bufferInfos: List<BufferInfo>, /** * List of Ids of Network sync objects existing at the current time. * * Network objects created or modified after [SessionInit] will be defined * via sync updates and RPC identity creation messages. */ - val networkIds: QVariantList? + val networkIds: List<NetworkId> ) : HandshakeMessage() } diff --git a/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/serializers/handshake/SessionInitSerializer.kt b/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/serializers/handshake/SessionInitSerializer.kt index 109cd9f..4e55b55 100644 --- a/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/serializers/handshake/SessionInitSerializer.kt +++ b/libquassel-protocol/src/main/kotlin/de/justjanne/libquassel/protocol/serializers/handshake/SessionInitSerializer.kt @@ -10,9 +10,13 @@ package de.justjanne.libquassel.protocol.serializers.handshake +import de.justjanne.libquassel.protocol.models.BufferInfo import de.justjanne.libquassel.protocol.models.HandshakeMessage +import de.justjanne.libquassel.protocol.models.ids.NetworkId import de.justjanne.libquassel.protocol.models.types.QtType +import de.justjanne.libquassel.protocol.models.types.QuasselType import de.justjanne.libquassel.protocol.serializers.HandshakeSerializer +import de.justjanne.libquassel.protocol.variant.QVariantList import de.justjanne.libquassel.protocol.variant.QVariantMap import de.justjanne.libquassel.protocol.variant.into import de.justjanne.libquassel.protocol.variant.qVariant @@ -27,8 +31,18 @@ object SessionInitSerializer : HandshakeSerializer<HandshakeMessage.SessionInit> "MsgType" to qVariant(type, QtType.QString), "SessionState" to qVariant( mapOf( - "BufferInfos" to qVariant(data.bufferInfos, QtType.QVariantList), - "NetworkIds" to qVariant(data.networkIds, QtType.QVariantList), + "BufferInfos" to qVariant<QVariantList>( + data.bufferInfos.map { + qVariant(it, QuasselType.BufferInfo) + }, + QtType.QVariantList + ), + "NetworkIds" to qVariant<QVariantList>( + data.networkIds.map { + qVariant(it, QuasselType.NetworkId) + }, + QtType.QVariantList + ), "Identities" to qVariant(data.identities, QtType.QVariantList), ), QtType.QVariantMap @@ -37,8 +51,12 @@ object SessionInitSerializer : HandshakeSerializer<HandshakeMessage.SessionInit> override fun deserialize(data: QVariantMap) = data["SessionState"].into<QVariantMap>().let { HandshakeMessage.SessionInit( - bufferInfos = it?.get("BufferInfos").into(), - networkIds = it?.get("NetworkIds").into(), + bufferInfos = it?.get("BufferInfos").into<QVariantList>()?.mapNotNull { + it.into<BufferInfo>() + }.orEmpty(), + networkIds = it?.get("NetworkIds").into<QVariantList>()?.mapNotNull { + it.into<NetworkId>() + }.orEmpty(), identities = it?.get("Identities").into(), ) } -- GitLab