X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.kt;h=04a94c7ee432aecb2ad00562ef09e9d8e5cf0186;hb=d3ec9382d07899f09c2bf74c1ce150df34d6f3aa;hp=e2281acb7653a423ff050332cd067e376120c9b0;hpb=2a9ef0e07136d8c56f4eea32ed49e43bfd5e576f;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt b/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt index e2281ac..04a94c7 100644 --- a/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt +++ b/src/main/kotlin/net/pterodactylus/sone/database/memory/MemoryDatabase.kt @@ -29,12 +29,15 @@ import net.pterodactylus.sone.data.Album import net.pterodactylus.sone.data.Image import net.pterodactylus.sone.data.Post import net.pterodactylus.sone.data.PostReply +import net.pterodactylus.sone.data.PostReplyShell +import net.pterodactylus.sone.data.PostShell import net.pterodactylus.sone.data.Sone import net.pterodactylus.sone.data.allAlbums import net.pterodactylus.sone.data.allImages import net.pterodactylus.sone.data.impl.AlbumBuilderImpl import net.pterodactylus.sone.data.impl.ImageBuilderImpl import net.pterodactylus.sone.data.newestReplyFirst +import net.pterodactylus.sone.data.toShell import net.pterodactylus.sone.database.AlbumBuilder import net.pterodactylus.sone.database.Database import net.pterodactylus.sone.database.DatabaseException @@ -55,17 +58,19 @@ import kotlin.concurrent.withLock * Memory-based [PostDatabase] implementation. */ @Singleton -class MemoryDatabase @Inject constructor(private val configuration: Configuration) : AbstractService(), Database { +class MemoryDatabase constructor(private val configuration: Configuration, private val saveKnownPostRepliesRateLimiter: RateLimiter) : AbstractService(), Database { + + @javax.inject.Inject constructor(configuration: Configuration): this(configuration, RateLimiter.create(1.0)) private val lock = ReentrantReadWriteLock() private val readLock: ReadLock by lazy { lock.readLock() } private val writeLock: WriteLock by lazy { lock.writeLock() } private val configurationLoader = ConfigurationLoader(configuration) private val allSones = mutableMapOf() - private val allPosts = mutableMapOf() - private val sonePosts: Multimap = HashMultimap.create() + private val allPosts = mutableMapOf() + private val sonePosts: Multimap = HashMultimap.create() private val knownPosts = mutableSetOf() - private val allPostReplies = mutableMapOf() + private val allPostReplies = mutableMapOf() private val sonePostReplies: Multimap = TreeMultimap.create(Comparator { leftString, rightString -> leftString.compareTo(rightString) }, newestReplyFirst) private val knownPostReplies = mutableSetOf() private val allAlbums = mutableMapOf() @@ -76,7 +81,6 @@ class MemoryDatabase @Inject constructor(private val configuration: Configuratio private val memoryFriendDatabase = MemoryFriendDatabase(configurationLoader) private val saveRateLimiter: RateLimiter = RateLimiter.create(1.0) private val saveKnownPostsRateLimiter: RateLimiter = RateLimiter.create(1.0) - private val saveKnownPostRepliesRateLimiter: RateLimiter = RateLimiter.create(1.0) override val soneLoader get() = this::getSone