blob: 4771b37f22af97a273b9ed71815f418d57d3b9a3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import Foundation
actor SettingsSyncCoordinator {
private var pendingKeys: Set<SettingsSyncKey> = []
private var isDraining = false
func enqueue(_ keys: Set<SettingsSyncKey>) -> Bool {
pendingKeys.formUnion(keys)
guard !isDraining else { return false }
isDraining = true
return true
}
func dequeueBatch() -> Set<SettingsSyncKey> {
guard !pendingKeys.isEmpty else {
isDraining = false
return []
}
let nextBatch = pendingKeys
pendingKeys.removeAll()
return nextBatch
}
}
|