Skip to content
This repository was archived by the owner on Jan 3, 2024. It is now read-only.

Commit f057669

Browse files
committed
Add msgCacheWithLock()
1 parent 12c7448 commit f057669

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

Sources/Discord/Discord.swift

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,18 @@ public class Bot {
122122

123123
func cacheMessage(_ message: Message) {
124124
guard !(cacheManager.messages == 0) else { return }
125-
msgCacheLock.lock()
126-
127-
if cachedMessages.count == cacheManager.messages {
128-
let oldestMessage = cachedMessages.sorted(by: { $0.expires < $1.expires }).first!
129-
cachedMessages.remove(oldestMessage)
125+
msgCacheWithLock {
126+
if cachedMessages.count == cacheManager.messages {
127+
let oldestMessage = cachedMessages.sorted(by: { $0.expires < $1.expires }).first!
128+
cachedMessages.remove(oldestMessage)
129+
}
130+
cachedMessages.insert(message)
130131
}
131-
cachedMessages.insert(message)
132+
}
133+
134+
private func msgCacheWithLock(_ execute: () -> Void) {
135+
msgCacheLock.lock()
136+
execute()
132137
msgCacheLock.unlock()
133138
}
134139

@@ -354,11 +359,11 @@ public class Bot {
354359
private func clearCache() {
355360
dms.removeAll()
356361
users.removeAll()
357-
msgCacheLock.lock()
358-
for messageId in Set<Snowflake>(cachedMessages.map({ $0.id })) {
359-
removeCachedMessage(messageId)
362+
msgCacheWithLock {
363+
for messageId in cachedMessages.map({ $0.id }) {
364+
removeCachedMessage(messageId)
365+
}
360366
}
361-
msgCacheLock.unlock()
362367
for guild in guilds {
363368
guild.channelsCache.removeAll()
364369
guild.membersCache.removeAll()

0 commit comments

Comments
 (0)