diff --git a/kmqtt-client/src/commonMain/kotlin/io/github/davidepianca98/MQTTClient.kt b/kmqtt-client/src/commonMain/kotlin/io/github/davidepianca98/MQTTClient.kt index 5492e3b023a21cb74f6c0695916c8bcd8d8967e4..dd25daeaa4e902470fdb85b485e88127a3602352 100644 --- a/kmqtt-client/src/commonMain/kotlin/io/github/davidepianca98/MQTTClient.kt +++ b/kmqtt-client/src/commonMain/kotlin/io/github/davidepianca98/MQTTClient.kt @@ -41,6 +41,7 @@ import io.github.davidepianca98.mqtt.packets.mqttv4.MQTT4Pubcomp import io.github.davidepianca98.mqtt.packets.mqttv4.MQTT4Publish import io.github.davidepianca98.mqtt.packets.mqttv4.MQTT4Suback import io.github.davidepianca98.mqtt.packets.mqttv4.MQTT4Subscribe +import io.github.davidepianca98.mqtt.packets.mqttv4.toReasonCode import io.github.davidepianca98.mqtt.packets.mqttv5.MQTT5Auth import io.github.davidepianca98.mqtt.packets.mqttv5.MQTT5Connack import io.github.davidepianca98.mqtt.packets.mqttv5.MQTT5Connect @@ -539,7 +540,8 @@ public class MQTTClient( enhancedAuthCallback(packet.properties.authenticationData) } else if (packet is MQTT4Connack) { if (packet.connectReturnCode != ConnectReturnCode.CONNECTION_ACCEPTED) { - throw IOException("Connection failed with code: ${packet.connectReturnCode}") + throw MQTTException(packet.connectReturnCode.toReasonCode()) +// throw IOException("Connection failed with code: ${packet.connectReturnCode}") } } diff --git a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/ConnectReturnCode.kt b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/ConnectReturnCode.kt index 8346c226a76091a54e5da7d80e50462f9212ab3f..09ad45dea9403abf059039495a48e6f83dacca3c 100644 --- a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/ConnectReturnCode.kt +++ b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/ConnectReturnCode.kt @@ -1,5 +1,8 @@ package io.github.davidepianca98.mqtt.packets.mqttv4 +import io.github.davidepianca98.mqtt.packets.mqttv4.ConnectReturnCode.* +import io.github.davidepianca98.mqtt.packets.mqttv5.ReasonCode + public enum class ConnectReturnCode(public val value: Int) { CONNECTION_ACCEPTED(0), UNACCEPTABLE_PROTOCOL_VERSION(1), @@ -9,6 +12,15 @@ public enum class ConnectReturnCode(public val value: Int) { NOT_AUTHORIZED(5); public companion object { - public fun valueOf(value: Int): ConnectReturnCode? = values().firstOrNull { it.value == value } + public fun valueOf(value: Int): ConnectReturnCode? = entries.firstOrNull { it.value == value } } } + +public fun ConnectReturnCode.toReasonCode() : ReasonCode = when (this) { + CONNECTION_ACCEPTED -> ReasonCode.SUCCESS + UNACCEPTABLE_PROTOCOL_VERSION -> ReasonCode.UNSUPPORTED_PROTOCOL_VERSION + IDENTIFIER_REJECTED -> ReasonCode.CLIENT_IDENTIFIER_NOT_VALID + SERVER_UNAVAILABLE -> ReasonCode.SERVER_UNAVAILABLE + BAD_USERNAME_PASSWORD -> ReasonCode.BAD_USER_NAME_OR_PASSWORD + NOT_AUTHORIZED -> ReasonCode.NOT_AUTHORIZED +} diff --git a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/SubackReturnCode.kt b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/SubackReturnCode.kt index 0c8331fabc7ed530871afde4ba5b4a3e3748b9b0..797248372600fbd1e6dc5b40bf2cd01460a84015 100644 --- a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/SubackReturnCode.kt +++ b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv4/SubackReturnCode.kt @@ -9,7 +9,7 @@ public enum class SubackReturnCode(public val value: Int) { FAILURE(128); public companion object { - public fun valueOf(value: Int): SubackReturnCode? = values().firstOrNull { it.value == value } + public fun valueOf(value: Int): SubackReturnCode? = entries.firstOrNull { it.value == value } } } diff --git a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/ReasonCode.kt b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/ReasonCode.kt index dfba46b5feba0b3bead849013486f754d6396288..2b61f538b50abde89a1d9ddd8b91b2c28b0c2d00 100644 --- a/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/ReasonCode.kt +++ b/kmqtt-common/src/commonMain/kotlin/io/github/davidepianca98/mqtt/packets/mqttv5/ReasonCode.kt @@ -46,6 +46,6 @@ public enum class ReasonCode(public val value: Int) { WILDCARD_SUBSCRIPTIONS_NOT_SUPPORTED(162); public companion object { - public fun valueOf(value: Int): ReasonCode? = values().firstOrNull { it.value == value } + public fun valueOf(value: Int): ReasonCode? = entries.firstOrNull { it.value == value } } }