From 640afa97f893b495f9d22c7772fadf4d00b7e239 Mon Sep 17 00:00:00 2001 From: Yentis <yentl178@gmail.com> Date: Tue, 25 Feb 2025 08:50:21 +0100 Subject: [PATCH] read and write all bytes at once instead of one at a time --- .../io/github/davidepianca98/socket/tcp/WebSocket.kt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt b/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt index c1a4ba8..c8168c7 100644 --- a/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt +++ b/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt @@ -85,9 +85,12 @@ internal class WebSocket(private val socket: Socket) : SocketInterface { private fun decodeBinary(length: ULong, key: UByteArray): UByteArray { val decoded = ByteArrayOutputStream() - for (i in 0 until length.toInt()) { - decoded.write(currentReceivedData.read() xor key[i and 0x3]) + + val bytes = currentReceivedData.readBytes(length.toInt()).mapIndexed { index, uByte -> + uByte xor key[index and 0x3] } + decoded.write(bytes.toUByteArray()) + currentReceivedData.shift() return decoded.toByteArray() } -- GitLab