From 32f9675fe41bc01346a82a618974b0271873a836 Mon Sep 17 00:00:00 2001 From: jubb Date: Wed, 17 Mar 2021 13:55:30 +1100 Subject: [PATCH] fix: dynamic output buffer size, reusing the byte array buffer and only copying the written part to persistence --- .../session/libsession/messaging/jobs/MessageSendJob.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt index d23aed8846..1a630b55ae 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/MessageSendJob.kt @@ -83,14 +83,14 @@ class MessageSendJob(val message: Message, val destination: Destination) : Job { //serialize Message and Destination properties val kryo = Kryo() kryo.isRegistrationRequired = false - val serializedMessage = ByteArray(4096) - val serializedDestination = ByteArray(4096) - var output = Output(serializedMessage) + val output = Output(ByteArray(4096), -1) // maxBufferSize '-1' will dynamically grow internally if we run out of room serializing the message kryo.writeClassAndObject(output, message) output.close() - output = Output(serializedDestination) + val serializedMessage = output.toBytes() + output.clear() kryo.writeClassAndObject(output, destination) output.close() + val serializedDestination = output.toBytes() return Data.Builder().putByteArray(KEY_MESSAGE, serializedMessage) .putByteArray(KEY_DESTINATION, serializedDestination) .build();