Skip to content
Snippets Groups Projects
Verified Commit a98cc493 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Redefining some APIs

parent 781fad77
No related branches found
No related tags found
1 merge request!2Draft: Jetpack compose rewrite
Pipeline #579 passed
...@@ -4,6 +4,7 @@ import de.kuschku.libquassel.protocol.connection.ProtocolInfoSerializer ...@@ -4,6 +4,7 @@ import de.kuschku.libquassel.protocol.connection.ProtocolInfoSerializer
import de.kuschku.libquassel.protocol.features.FeatureSet import de.kuschku.libquassel.protocol.features.FeatureSet
import de.kuschku.libquassel.protocol.io.ChainedByteBuffer import de.kuschku.libquassel.protocol.io.ChainedByteBuffer
import de.kuschku.libquassel.protocol.messages.handshake.ClientInit import de.kuschku.libquassel.protocol.messages.handshake.ClientInit
import de.kuschku.libquassel.protocol.serializers.HandshakeSerializers
import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitAckSerializer import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitAckSerializer
import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitRejectSerializer import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitRejectSerializer
import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitSerializer import de.kuschku.libquassel.protocol.serializers.handshake.ClientInitSerializer
...@@ -111,10 +112,9 @@ class ExampleUnitTest { ...@@ -111,10 +112,9 @@ class ExampleUnitTest {
read { read {
val data = HandshakeMapSerializer.deserialize(it, connectionFeatureSet) val data = HandshakeMapSerializer.deserialize(it, connectionFeatureSet)
println(data) println(data)
when (data["MsgType"].into<String>()) { val msgType: String = data["MsgType"].into("")
"ClientInitAck" -> println(ClientInitAckSerializer.deserialize(data)) val message: Any? = HandshakeSerializers[msgType]?.deserialize(data)
"ClientInitReject" -> println(ClientInitRejectSerializer.deserialize(data)) println(message)
}
} }
} }
} }
......
...@@ -33,12 +33,11 @@ object HandshakeSerializers { ...@@ -33,12 +33,11 @@ object HandshakeSerializers {
ClientInitRejectSerializer, ClientInitRejectSerializer,
).associateBy(HandshakeSerializer<*>::type) ).associateBy(HandshakeSerializer<*>::type)
@PublishedApi operator fun get(type: String) = serializers[type]
internal fun find(type: String) = serializers[type]
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
inline operator fun <reified T> get(type: String): HandshakeSerializer<T> { inline fun <reified T> find(type: String): HandshakeSerializer<T> {
val serializer = find(type) val serializer = get(type)
?: throw NoSerializerForTypeException.Handshake(type, T::class.java) ?: throw NoSerializerForTypeException.Handshake(type, T::class.java)
if (serializer.javaType == T::class.java) { if (serializer.javaType == T::class.java) {
return serializer as HandshakeSerializer<T> return serializer as HandshakeSerializer<T>
......
...@@ -54,12 +54,11 @@ object QtSerializers { ...@@ -54,12 +54,11 @@ object QtSerializers {
QVariantMapSerializer, QVariantMapSerializer,
).associateBy(QtSerializer<*>::qtType) ).associateBy(QtSerializer<*>::qtType)
@PublishedApi operator fun get(type: QtType) = serializers[type]
internal fun find(type: QtType) = serializers[type]
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
inline operator fun <reified T> get(type: QtType): QtSerializer<T> { inline fun <reified T> find(type: QtType): QtSerializer<T> {
val serializer = find(type) val serializer = get(type)
?: throw NoSerializerForTypeException.Qt(type, T::class.java) ?: throw NoSerializerForTypeException.Qt(type, T::class.java)
if (serializer.javaType == T::class.java) { if (serializer.javaType == T::class.java) {
return serializer as QtSerializer<T> return serializer as QtSerializer<T>
......
...@@ -42,12 +42,11 @@ object QuasselSerializers { ...@@ -42,12 +42,11 @@ object QuasselSerializers {
PeerPtrSerializer, PeerPtrSerializer,
).associateBy(QuasselSerializer<*>::quasselType) ).associateBy(QuasselSerializer<*>::quasselType)
@PublishedApi operator fun get(type: QuasselType) = serializers[type]
internal fun find(type: QuasselType) = serializers[type]
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
inline operator fun <reified T> get(type: QuasselType): QuasselSerializer<T> { inline fun <reified T> find(type: QuasselType): QuasselSerializer<T> {
val serializer = find(type) val serializer = get(type)
?: throw NoSerializerForTypeException.Quassel(type, T::class.java) ?: throw NoSerializerForTypeException.Quassel(type, T::class.java)
if (serializer.javaType == T::class.java) { if (serializer.javaType == T::class.java) {
return serializer as QuasselSerializer<T> return serializer as QuasselSerializer<T>
......
...@@ -34,6 +34,7 @@ object ClientInitSerializer : HandshakeSerializer<ClientInit> { ...@@ -34,6 +34,7 @@ object ClientInitSerializer : HandshakeSerializer<ClientInit> {
override val javaType: Class<out ClientInit> = ClientInit::class.java override val javaType: Class<out ClientInit> = ClientInit::class.java
override fun serialize(data: ClientInit) = mapOf( override fun serialize(data: ClientInit) = mapOf(
"MsgType" to qVariant(type, QtType.QString),
"ClientVersion" to qVariant(data.clientVersion, QtType.QString), "ClientVersion" to qVariant(data.clientVersion, QtType.QString),
"ClientDate" to qVariant(data.buildDate, QtType.QString), "ClientDate" to qVariant(data.buildDate, QtType.QString),
"Features" to qVariant(data.clientFeatures.toBits(), QtType.UInt), "Features" to qVariant(data.clientFeatures.toBits(), QtType.UInt),
......
...@@ -62,7 +62,7 @@ object QVariantSerializer : QtSerializer<QVariant_> { ...@@ -62,7 +62,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private fun deserialize(type: QtType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ { private fun deserialize(type: QtType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
val serializer = QtSerializers.find(type) val serializer = QtSerializers[type]
?: throw NoSerializerForTypeException.Qt(type) ?: throw NoSerializerForTypeException.Qt(type)
val value = serializer.deserialize(buffer, featureSet) val value = serializer.deserialize(buffer, featureSet)
return QVariant.of(value, serializer as QtSerializer<Any?>) return QVariant.of(value, serializer as QtSerializer<Any?>)
...@@ -70,7 +70,7 @@ object QVariantSerializer : QtSerializer<QVariant_> { ...@@ -70,7 +70,7 @@ object QVariantSerializer : QtSerializer<QVariant_> {
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private fun deserialize(type: QuasselType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ { private fun deserialize(type: QuasselType, buffer: ByteBuffer, featureSet: FeatureSet): QVariant_ {
val serializer = QuasselSerializers.find(type) val serializer = QuasselSerializers[type]
?: throw NoSerializerForTypeException.Quassel(type) ?: throw NoSerializerForTypeException.Quassel(type)
val value = serializer.deserialize(buffer, featureSet) val value = serializer.deserialize(buffer, featureSet)
return QVariant.of(value, serializer as QuasselSerializer<Any?>) return QVariant.of(value, serializer as QuasselSerializer<Any?>)
......
...@@ -72,10 +72,10 @@ sealed class QVariant<T> constructor( ...@@ -72,10 +72,10 @@ sealed class QVariant<T> constructor(
} }
inline fun <reified T> qVariant(data: T, type: QtType): QVariant<T> = inline fun <reified T> qVariant(data: T, type: QtType): QVariant<T> =
QVariant.of(data, QtSerializers[type]) QVariant.of(data, QtSerializers.find(type))
inline fun <reified T> qVariant(data: T, type: QuasselType): QVariant<T> = inline fun <reified T> qVariant(data: T, type: QuasselType): QVariant<T> =
QVariant.of(data, QuasselSerializers[type]) QVariant.of(data, QuasselSerializers.find(type))
inline fun <reified T> QVariant_?.into(): T? = inline fun <reified T> QVariant_?.into(): T? =
this?.withType<T>()?.value() this?.withType<T>()?.value()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment