@@ -41,7 +41,7 @@ class IterableTaskRunner: NSObject {
41
41
42
42
func start( ) {
43
43
ITBInfo ( )
44
- queue . async { [ weak self] in
44
+ persistenceContext . perform { [ weak self] in
45
45
self ? . paused = false
46
46
self ? . connectivityManager. start ( )
47
47
self ? . run ( )
@@ -50,7 +50,7 @@ class IterableTaskRunner: NSObject {
50
50
51
51
func stop( ) {
52
52
ITBInfo ( )
53
- queue . async { [ weak self] in
53
+ persistenceContext . perform { [ weak self] in
54
54
self ? . paused = true
55
55
self ? . connectivityManager. stop ( )
56
56
}
@@ -59,7 +59,7 @@ class IterableTaskRunner: NSObject {
59
59
@objc
60
60
private func onTaskScheduled( notification: Notification ) {
61
61
ITBInfo ( )
62
- queue . async { [ weak self] in
62
+ persistenceContext . perform { [ weak self] in
63
63
if self ? . paused == false {
64
64
self ? . run ( )
65
65
}
@@ -69,22 +69,22 @@ class IterableTaskRunner: NSObject {
69
69
@objc
70
70
private func onAppWillEnterForeground( notification _: Notification ) {
71
71
ITBInfo ( )
72
- queue . async { [ weak self] in
72
+ persistenceContext . perform { [ weak self] in
73
73
self ? . start ( )
74
74
}
75
75
}
76
76
77
77
@objc
78
78
private func onAppDidEnterBackground( notification _: Notification ) {
79
79
ITBInfo ( )
80
- queue . async { [ weak self] in
80
+ persistenceContext . perform { [ weak self] in
81
81
self ? . stop ( )
82
82
}
83
83
}
84
84
85
85
private func onConnectivityChanged( connected: Bool ) {
86
86
ITBInfo ( )
87
- queue . async { [ weak self] in
87
+ persistenceContext . perform { [ weak self] in
88
88
if connected {
89
89
if self ? . paused == true {
90
90
self ? . paused = false
@@ -113,11 +113,7 @@ class IterableTaskRunner: NSObject {
113
113
114
114
workItem? . cancel ( )
115
115
116
- persistenceContext. perform { [ weak self] in
117
- self ? . queue. async {
118
- self ? . processTasks ( )
119
- }
120
- }
116
+ processTasks ( )
121
117
}
122
118
123
119
private func scheduleNext( ) {
@@ -130,11 +126,15 @@ class IterableTaskRunner: NSObject {
130
126
running = false
131
127
132
128
workItem? . cancel ( )
129
+
133
130
let workItem = DispatchWorkItem { [ weak self] in
134
- self ? . run ( )
131
+ self ? . persistenceContext. perform {
132
+ self ? . run ( )
133
+ }
135
134
}
136
135
self . workItem = workItem
137
- queue. asyncAfter ( deadline: . now( ) + timeInterval, execute: workItem)
136
+
137
+ DispatchQueue . global ( ) . asyncAfter ( deadline: . now( ) + timeInterval, execute: workItem)
138
138
}
139
139
140
140
private func processTasks( ) {
@@ -160,7 +160,7 @@ class IterableTaskRunner: NSObject {
160
160
guard let strongSelf = self else {
161
161
return
162
162
}
163
- strongSelf. queue . async {
163
+ strongSelf. persistenceContext . perform {
164
164
switch executionResult {
165
165
case . success, . failure, . error:
166
166
strongSelf. processTasks ( )
@@ -209,6 +209,7 @@ class IterableTaskRunner: NSObject {
209
209
result. resolve ( with: taskExecutionResult)
210
210
}
211
211
} receiveError: { [ weak self] error in
212
+ // TODO: test
212
213
ITBError ( " task processing error: \( error. localizedDescription) " )
213
214
guard let strongSelf = self else {
214
215
return
@@ -217,6 +218,7 @@ class IterableTaskRunner: NSObject {
217
218
result. resolve ( with: . failure)
218
219
}
219
220
} catch let error {
221
+ // TODO: test
220
222
ITBError ( " Error proessing task: \( task. id) , message: \( error. localizedDescription) " )
221
223
deleteTask ( task: task)
222
224
result. resolve ( with: . error)
@@ -229,7 +231,7 @@ class IterableTaskRunner: NSObject {
229
231
ITBInfo ( )
230
232
let fulfill = Fulfill < TaskExecutionResult , Never > ( )
231
233
232
- queue . async { [ weak self] in
234
+ persistenceContext . perform { [ weak self] in
233
235
guard let strongSelf = self else {
234
236
ITBError ( )
235
237
return
@@ -277,16 +279,12 @@ class IterableTaskRunner: NSObject {
277
279
278
280
private func deleteTask( task: IterableTask ) {
279
281
ITBInfo ( " deleting task: \( task. id) " )
280
- queue. async { [ weak self] in
281
- do {
282
- try self ? . persistenceContext. performAndWait {
283
- try self ? . persistenceContext. delete ( task: task)
284
- try self ? . persistenceContext. save ( )
285
- }
286
- } catch let error {
287
- ITBError ( error. localizedDescription)
288
- self ? . healthMonitor. onDeleteError ( task: task)
289
- }
282
+ do {
283
+ try self . persistenceContext. delete ( task: task)
284
+ try self . persistenceContext. save ( )
285
+ } catch let error {
286
+ ITBError ( error. localizedDescription)
287
+ self . healthMonitor. onDeleteError ( task: task)
290
288
}
291
289
}
292
290
@@ -298,7 +296,6 @@ class IterableTaskRunner: NSObject {
298
296
case error
299
297
}
300
298
301
- private var queue = DispatchQueue ( label: " TaskRunnerQueue " )
302
299
private var workItem : DispatchWorkItem ?
303
300
private var paused = false
304
301
private let networkSession : NetworkSessionProtocol
0 commit comments