mirror of
https://github.com/Ranchero-Software/NetNewsWire.git
synced 2024-12-22 15:50:17 +01:00
Simplify and improve DatabaseIDCache.
This commit is contained in:
parent
ae77aece2a
commit
48bfcedbf7
@ -14,28 +14,22 @@ final class DatabaseIDCache: Sendable {
|
||||
|
||||
static let shared = DatabaseIDCache()
|
||||
|
||||
private let _databaseIDCache = OSAllocatedUnfairLock(initialState: [String: String]())
|
||||
private var databaseIDCache: [String: String] {
|
||||
get {
|
||||
_databaseIDCache.withLock { $0 }
|
||||
}
|
||||
set {
|
||||
_databaseIDCache.withLock { $0 = newValue }
|
||||
}
|
||||
}
|
||||
private let databaseIDCache = OSAllocatedUnfairLock(initialState: [String: String]())
|
||||
|
||||
/// Generates — or retrieves from cache — a database-suitable ID based on a String.
|
||||
func databaseIDWithString(_ s: String) -> String {
|
||||
|
||||
if let identifier = databaseIDCache[s] {
|
||||
databaseIDCache.withLock { cache in
|
||||
if let identifier = cache[s] {
|
||||
return identifier
|
||||
}
|
||||
|
||||
// MD5 works because:
|
||||
// * It’s fast
|
||||
// * Collisions aren’t going to happen with feed data
|
||||
let identifier = s.md5String
|
||||
cache[s] = identifier
|
||||
return identifier
|
||||
}
|
||||
|
||||
// MD5 works because:
|
||||
// * It’s fast
|
||||
// * Collisions aren’t going to happen with feed data
|
||||
let identifier = s.md5String
|
||||
databaseIDCache[s] = identifier
|
||||
return identifier
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user