Generalizes the FastEOSE cache for Users
This commit is contained in:
+1
-1
@@ -42,7 +42,7 @@ abstract class PerUserEoseManager<T>(
|
||||
allKeys: () -> Set<T>,
|
||||
val invalidateAfterEose: Boolean = false,
|
||||
) : BaseEoseManager<T>(client, allKeys) {
|
||||
private val latestEOSEs = EOSEAccountFast()
|
||||
private val latestEOSEs = EOSEAccountFast<User>()
|
||||
private val userSubscriptionMap = mutableMapOf<User, String>()
|
||||
|
||||
fun since(key: T) = latestEOSEs.since(user(key))
|
||||
|
||||
+3
-3
@@ -33,7 +33,7 @@ class UserWatcherSubAssembler(
|
||||
allKeys: () -> Set<UserFinderQueryState>,
|
||||
) : SingleSubEoseManager<UserFinderQueryState>(client, allKeys) {
|
||||
var lastUsersOnFilter: Set<User> = emptySet()
|
||||
var latestEOSEs: EOSEAccountFast = EOSEAccountFast(2000)
|
||||
var latestEOSEs: EOSEAccountFast<User> = EOSEAccountFast<User>(2000)
|
||||
|
||||
override fun newEose(
|
||||
relayUrl: String,
|
||||
@@ -69,7 +69,7 @@ class UserWatcherSubAssembler(
|
||||
|
||||
fun groupByRelayPresence(
|
||||
users: Iterable<User>,
|
||||
eoseCache: EOSEAccountFast,
|
||||
eoseCache: EOSEAccountFast<User>,
|
||||
): Collection<List<User>> =
|
||||
users
|
||||
.groupBy { eoseCache.since(it)?.keys?.hashCode() }
|
||||
@@ -81,7 +81,7 @@ class UserWatcherSubAssembler(
|
||||
|
||||
fun findMinimumEOSEsForUsers(
|
||||
users: List<User>,
|
||||
eoseCache: EOSEAccountFast,
|
||||
eoseCache: EOSEAccountFast<User>,
|
||||
): Map<String, EOSETime> {
|
||||
val minLatestEOSEs = mutableMapOf<String, EOSETime>()
|
||||
|
||||
|
||||
@@ -122,13 +122,13 @@ class EOSEAccount(
|
||||
) = addOrUpdate(user, listCode, relayUrl, time)
|
||||
}
|
||||
|
||||
class EOSEAccountFast(
|
||||
class EOSEAccountFast<T : Any>(
|
||||
cacheSize: Int = 20,
|
||||
) {
|
||||
private val users: LruCache<User, EOSERelayList> = LruCache<User, EOSERelayList>(cacheSize)
|
||||
private val users: LruCache<T, EOSERelayList> = LruCache<T, EOSERelayList>(cacheSize)
|
||||
|
||||
fun addOrUpdate(
|
||||
user: User,
|
||||
user: T,
|
||||
relayUrl: String,
|
||||
time: Long,
|
||||
) {
|
||||
@@ -143,14 +143,14 @@ class EOSEAccountFast(
|
||||
}
|
||||
}
|
||||
|
||||
fun removeDataFor(user: User) {
|
||||
fun removeDataFor(user: T) {
|
||||
users.remove(user)
|
||||
}
|
||||
|
||||
fun since(key: User) = users[key]?.relayList
|
||||
fun since(key: T) = users[key]?.relayList
|
||||
|
||||
fun newEose(
|
||||
user: User,
|
||||
user: T,
|
||||
relayUrl: String,
|
||||
time: Long,
|
||||
) = addOrUpdate(user, relayUrl, time)
|
||||
|
||||
Reference in New Issue
Block a user