@@ -27,7 +27,7 @@ public actor DiskCache<Key: Hashable & Sendable>: Caching, @unchecked Sendable {
27
27
// }
28
28
}
29
29
30
- private let clock : _Clock
30
+ private let clock : any Clock < Duration >
31
31
32
32
private var path : URL {
33
33
get throws {
@@ -57,23 +57,9 @@ public actor DiskCache<Key: Hashable & Sendable>: Caching, @unchecked Sendable {
57
57
return " [ \( path. lastPathComponent) ] "
58
58
}
59
59
60
- public init ( options: Options , logger: Logger = . init( . disabled) ) {
60
+ public init ( options: Options , clock : some Clock < Duration > = . suspending , logger: Logger = . init( . disabled) ) {
61
61
self . options = options
62
- if #available( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * ) {
63
- self . clock = NewClock ( . suspending)
64
- } else {
65
- self . clock = _Clock ( )
66
- }
67
- self . logger = logger
68
- Task {
69
- try await _prepare ( )
70
- }
71
- }
72
-
73
- @available ( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * )
74
- init < C: Clock > ( options: Options , clock: C , logger: Logger = . init( . disabled) ) where C. Instant. Duration == Duration {
75
- self . options = options
76
- self . clock = NewClock ( clock)
62
+ self . clock = clock
77
63
self . logger = logger
78
64
Task {
79
65
try await _prepare ( )
@@ -225,7 +211,7 @@ extension DiskCache {
225
211
isFlushScheduled = true
226
212
defer { isFlushScheduled = false }
227
213
228
- try await clock. sleep ( until : 1 )
214
+ try await clock. sleep ( for : . seconds ( 1 ) )
229
215
try ? await oldTask? . value
230
216
231
217
guard isFlushNeeded else { return }
@@ -344,7 +330,7 @@ extension DiskCache {
344
330
logger. debug ( " \( self . logKey) sweep scheduled " )
345
331
let oldTask = sweepingTask
346
332
sweepingTask = Task {
347
- try await clock. sleep ( until : seconds)
333
+ try await clock. sleep ( for : . seconds( seconds ) )
348
334
_ = await oldTask? . result
349
335
do {
350
336
logger. debug ( " \( self . logKey) sweep starting " )
@@ -460,27 +446,6 @@ extension DiskCache {
460
446
}
461
447
}
462
448
463
- extension DiskCache {
464
- class _Clock : @unchecked Sendable {
465
- func sleep( until seconds: Int ) async throws {
466
- try await Task . sleep ( nanoseconds: UInt64 ( seconds) * 1_000_000_000 )
467
- }
468
- }
469
-
470
- @available ( macOS 13 . 0 , iOS 16 . 0 , watchOS 9 . 0 , tvOS 16 . 0 , * )
471
- final class NewClock < C: Clock > : _Clock , @unchecked Sendable where C. Instant. Duration == Duration {
472
- let clock : C
473
-
474
- init ( _ clock: C ) {
475
- self . clock = clock
476
- }
477
-
478
- override func sleep( until seconds: Int ) async throws {
479
- try await clock. sleep ( until: clock. now. advanced ( by: . seconds( seconds) ) , tolerance: nil )
480
- }
481
- }
482
- }
483
-
484
449
struct Staging < Key: Hashable & Sendable > {
485
450
enum Operation : Equatable {
486
451
case add( Data )
0 commit comments