@@ -46,12 +46,12 @@ extension Effect {
46
46
return Self (
47
47
operation: . producer(
48
48
SignalProducer . deferred { ( ) -> SignalProducer < Action , Failure > in
49
- cancellablesLock . lock ( )
50
- defer { cancellablesLock . unlock ( ) }
49
+ _cancellablesLock . lock ( )
50
+ defer { _cancellablesLock . unlock ( ) }
51
51
52
- let id = CancelToken ( id: id)
52
+ let id = _CancelToken ( id: id)
53
53
if cancelInFlight {
54
- cancellationCancellables [ id] ? . forEach { $0. dispose ( ) }
54
+ _cancellationCancellables [ id] ? . forEach { $0. dispose ( ) }
55
55
}
56
56
57
57
let subject = Signal < Action , Failure > . pipe ( )
@@ -66,17 +66,17 @@ extension Effect {
66
66
. start ( subject. input)
67
67
var cancellationDisposable : AnyDisposable !
68
68
cancellationDisposable = AnyDisposable {
69
- cancellablesLock . sync {
69
+ _cancellablesLock . sync {
70
70
subject. input. sendCompleted ( )
71
71
disposable. dispose ( )
72
- cancellationCancellables [ id] ? . remove ( cancellationDisposable)
73
- if cancellationCancellables [ id] ? . isEmpty == . some( true ) {
74
- cancellationCancellables [ id] = nil
72
+ _cancellationCancellables [ id] ? . remove ( cancellationDisposable)
73
+ if _cancellationCancellables [ id] ? . isEmpty == . some( true ) {
74
+ _cancellationCancellables [ id] = nil
75
75
}
76
76
}
77
77
}
78
78
79
- cancellationCancellables [ id, default: [ ] ] . insert (
79
+ _cancellationCancellables [ id, default: [ ] ] . insert (
80
80
cancellationDisposable
81
81
)
82
82
@@ -124,8 +124,8 @@ extension Effect {
124
124
/// identifier.
125
125
public static func cancel( id: AnyHashable ) -> Self {
126
126
. fireAndForget {
127
- cancellablesLock . sync {
128
- cancellationCancellables [ . init( id: id) ] ? . forEach { $0. dispose ( ) }
127
+ _cancellablesLock . sync {
128
+ _cancellationCancellables [ . init( id: id) ] ? . forEach { $0. dispose ( ) }
129
129
}
130
130
}
131
131
}
@@ -208,21 +208,21 @@ public func withTaskCancellation<T: Sendable>(
208
208
cancelInFlight: Bool = false ,
209
209
operation: @Sendable @escaping ( ) async throws -> T
210
210
) async rethrows -> T {
211
- let id = CancelToken ( id: id)
212
- let ( cancellable, task) = cancellablesLock . sync { ( ) -> ( AnyDisposable , Task < T , Error > ) in
211
+ let id = _CancelToken ( id: id)
212
+ let ( cancellable, task) = _cancellablesLock . sync { ( ) -> ( AnyDisposable , Task < T , Error > ) in
213
213
if cancelInFlight {
214
- cancellationCancellables [ id] ? . forEach { $0. dispose ( ) }
214
+ _cancellationCancellables [ id] ? . forEach { $0. dispose ( ) }
215
215
}
216
216
let task = Task { try await operation ( ) }
217
217
let cancellable = AnyDisposable { task. cancel ( ) }
218
- cancellationCancellables [ id, default: [ ] ] . insert ( cancellable)
218
+ _cancellationCancellables [ id, default: [ ] ] . insert ( cancellable)
219
219
return ( cancellable, task)
220
220
}
221
221
defer {
222
- cancellablesLock . sync {
223
- cancellationCancellables [ id] ? . remove ( cancellable)
224
- if cancellationCancellables [ id] ? . isEmpty == . some( true ) {
225
- cancellationCancellables [ id] = nil
222
+ _cancellablesLock . sync {
223
+ _cancellationCancellables [ id] ? . remove ( cancellable)
224
+ if _cancellationCancellables [ id] ? . isEmpty == . some( true ) {
225
+ _cancellationCancellables [ id] = nil
226
226
}
227
227
}
228
228
}
@@ -262,7 +262,7 @@ extension Task where Success == Never, Failure == Never {
262
262
///
263
263
/// - Parameter id: An identifier.
264
264
public static func cancel< ID: Hashable & Sendable > ( id: ID ) {
265
- cancellablesLock . sync { cancellationCancellables [ . init( id: id) ] ? . forEach { $0. dispose ( ) } }
265
+ _cancellablesLock . sync { _cancellationCancellables [ . init( id: id) ] ? . forEach { $0. dispose ( ) } }
266
266
}
267
267
268
268
/// Cancel any currently in-flight operation with the given identifier.
@@ -276,18 +276,18 @@ extension Task where Success == Never, Failure == Never {
276
276
}
277
277
}
278
278
279
- struct CancelToken : Hashable {
279
+ @ _spi ( Internals ) public struct _CancelToken : Hashable {
280
280
let id : AnyHashable
281
281
let discriminator : ObjectIdentifier
282
282
283
- init ( id: AnyHashable ) {
283
+ public init ( id: AnyHashable ) {
284
284
self . id = id
285
285
self . discriminator = ObjectIdentifier ( type ( of: id. base) )
286
286
}
287
287
}
288
288
289
- var cancellationCancellables : [ CancelToken : Set < AnyDisposable > ] = [ : ]
290
- let cancellablesLock = NSRecursiveLock ( )
289
+ @ _spi ( Internals ) public var _cancellationCancellables : [ _CancelToken : Set < AnyDisposable > ] = [ : ]
290
+ @ _spi ( Internals ) public let _cancellablesLock = NSRecursiveLock ( )
291
291
292
292
@rethrows
293
293
private protocol _ErrorMechanism {
0 commit comments