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