You can calculate them using something like: Prefetch keys generation
My implementation:
Code:class ServerKeys(val store: CacheStore) { val serverKeys: MutableList<Int> = mutableListOf() init { if (store.indexesCount >= 31) { serverKeys.add(calculateIndexSize(CacheIndex.DEFAULT_DATA)) serverKeys.add(calculateNativeLibSize("jaclib")) serverKeys.add(calculateNativeLibSize("jaggl")) serverKeys.add(calculateNativeLibSize("jagdx")) serverKeys.add(calculateNativeLibSize("sw3d")) serverKeys.add(calculateNativeLibSize("hw3d")) serverKeys.add(calculateNativeLibSize("jagtheora")) serverKeys.add(calculateIndexSize(CacheIndex.GRAPHICS_SHADERS)) serverKeys.add(calculateIndexSize(CacheIndex.TEXTURES_DEFINITIONS)) serverKeys.add(calculateIndexSize(CacheIndex.MISCELLANEOUS)) serverKeys.add(calculateIndexSize(CacheIndex.OBJECTS)) serverKeys.add(calculateIndexSize(CacheIndex.CLIENT_SCRIPTS_MAPS)) serverKeys.add(calculateIndexSize(CacheIndex.NPCS)) serverKeys.add(calculateIndexSize(CacheIndex.ITEMS)) serverKeys.add(calculateIndexSize(CacheIndex.ANIMATION_DEFINITIONS)) serverKeys.add(calculateIndexSize(CacheIndex.GRAPHICS_DEFINITIONS)) serverKeys.add(calculateIndexSize(CacheIndex.VARBIT_DEFINITIONS)) serverKeys.add(calculateIndexSize(CacheIndex.QUICK_CHAT_MESSAGES)) serverKeys.add(calculateIndexSize(CacheIndex.QUICK_CHAT_MENUS)) serverKeys.add(calculateIndexSize(CacheIndex.TEXTURES)) // unsure about that one serverKeys.add(calculateIndexSize(CacheIndex.PARTICLES)) serverKeys.add(calculateIndexSize(CacheIndex.BILLBOARDS)) serverKeys.add(calculateArchiveSize(CacheIndex.HUFFMAN, "huffman")) serverKeys.add(calculateIndexSize(CacheIndex.INTERFACES)) serverKeys.add(calculateIndexSize(CacheIndex.INTERFACE_SCRIPTS)) serverKeys.add(calculateIndexSize(CacheIndex.TEXT_FONTS)) serverKeys.add(calculateArchiveSize(CacheIndex.WORLD_MAP, "details")) } } private fun calculateIndexSize(index: CacheIndex): Int { var total = 0 for (archiveId in store[index].referenceTable.archives.keys) { total += store[index].getArchive(archiveId).decompressedData.size } total += store.index255.getArchive(index.id)!!.decompressedData.size return total } private fun calculateNativeLibSize(name: String): Int { val archiveId = store[CacheIndex.NATIVE_LIBRARIES].getArchiveId("windows/x86/$name.dll") return if (archiveId >= 0) { store[CacheIndex.NATIVE_LIBRARIES].getArchive(archiveId).decompressedData.size - 2 } else 0 } private fun calculateArchiveSize(index: CacheIndex, archiveName: String): Int { val archiveId = store[index].getArchiveId(archiveName) return if (archiveId >= 0) { store[index].getArchive(archiveId).decompressedData.size - 2 } else 0 } }