From f9ace6a9b92c8df4b0a7346f297c860327b31230 Mon Sep 17 00:00:00 2001 From: bemusementpark Date: Mon, 5 Aug 2024 10:26:52 +0930 Subject: [PATCH] Add LruCache and thread-safety --- .../src/main/java/org/session/libsignal/utilities/Snode.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libsignal/src/main/java/org/session/libsignal/utilities/Snode.kt b/libsignal/src/main/java/org/session/libsignal/utilities/Snode.kt index 288c3fcf1d..675fe55f85 100644 --- a/libsignal/src/main/java/org/session/libsignal/utilities/Snode.kt +++ b/libsignal/src/main/java/org/session/libsignal/utilities/Snode.kt @@ -1,6 +1,7 @@ package org.session.libsignal.utilities import android.annotation.SuppressLint +import android.util.LruCache /** * Create a Snode from a "-" delimited String if valid, null otherwise. @@ -39,10 +40,11 @@ class Snode(val address: String, val port: Int, val publicKeySet: KeySet?, val v override fun toString(): String = "$address:$port" companion object { - private val CACHE = mutableMapOf() + private val CACHE = LruCache(100) @SuppressLint("NotConstructor") - fun Version(value: String) = CACHE[value] ?: Snode.Version(value).also { CACHE[value] = it } + @Synchronized + fun Version(value: String) = CACHE[value] ?: Snode.Version(value).also { CACHE.put(value, it) } fun Version(parts: List) = Version(parts.joinToString(".")) }