From 4cd0a439a68d08dce8c49150868d4b925a8fb9a4 Mon Sep 17 00:00:00 2001 From: Robinson Date: Tue, 15 Mar 2022 15:11:53 +0100 Subject: [PATCH] Fixed issues when sending serialized primatives for class registration --- .../network/serialization/Serialization.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dorkbox/network/serialization/Serialization.kt b/src/dorkbox/network/serialization/Serialization.kt index dede52d8..f81ee98b 100644 --- a/src/dorkbox/network/serialization/Serialization.kt +++ b/src/dorkbox/network/serialization/Serialization.kt @@ -447,6 +447,7 @@ open class Serialization(private val references: Boolean classesToRegister.clear() // NOTE: to be clear, the "client" can ONLY registerRmi(IFACE, IMPL), to have extra info as the RMI-SERVER!! + // the client DOES NOT need to register anything! It will register what the server sends. val kryo = initKryo() // this will initialize the class registrations initializeClient(kryoRegistrationDetailsFromServer, classesToRegisterForRmi, kryo) @@ -590,7 +591,19 @@ open class Serialization(private val references: Boolean val clazzName = bytes[2] as String val serializerName = bytes[3] as String - val clazz = Class.forName(clazzName) + // if we are a primitive type, use the type directly + val clazz = when (clazzName) { + "boolean" -> Boolean::class.java + "byte" -> Byte::class.java + "char" -> Char::class.java + "short" -> Short::class.java + "int" -> Int::class.java + "float" -> Float::class.java + "long" -> Long::class.java + "double" -> Double::class.java + + else -> Class.forName(clazzName) + } when (typeId) { 0 -> classesToRegister.add(ClassRegistration0(clazz, maker.newInstantiatorOf(Class.forName(serializerName)).newInstance() as Serializer))