From 1688a110007d5792025b4ccc30367bfd88161421 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 24 Sep 2020 10:30:52 +0200 Subject: [PATCH] Property Store only saves values if they have changed --- src/dorkbox/network/storage/types/PropertyStore.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/dorkbox/network/storage/types/PropertyStore.kt b/src/dorkbox/network/storage/types/PropertyStore.kt index 3c65c346..1fd46d45 100644 --- a/src/dorkbox/network/storage/types/PropertyStore.kt +++ b/src/dorkbox/network/storage/types/PropertyStore.kt @@ -113,14 +113,17 @@ class PropertyStore(val dbFile: File, val logger: KLogger): GenericStore { * Setting to NULL removes it */ override operator fun set(key: Any, bytes: ByteArray?) { - if (bytes == null) { - loadedProps.remove(key) + val hasChanged = if (bytes == null) { + loadedProps.remove(key) != null } else { - loadedProps[key] = bytes + val prev = loadedProps.put(key, bytes) + !prev.contentEquals(bytes) } // every time we set info, we want to save it to disk (so the file on disk will ALWAYS be current, and so we can modify it as we choose) - save() + if (hasChanged) { + save() + } } fun save() {