8
8
9
9
#import " TaskPipelineManager.h"
10
10
#import " TaskItem.h"
11
+ #import " AppDelegate.h"
11
12
12
13
@implementation TaskPipelineManager
13
14
14
15
16
+ - (void ) dealloc
17
+ {
18
+ [self .periodicTaskPipelineCheckTimer invalidate ];
19
+ self.periodicTaskPipelineCheckTimer = NULL ;
20
+ }
21
+
22
+
23
+
24
+
15
25
- (instancetype )init
16
26
{
17
27
self = [super init ];
18
28
if (self) {
19
29
self.taskItemsArray = [NSMutableArray array ];
20
30
21
31
self.taskPipelineStatus = kTaskPipelineStatusIdle ;
32
+
33
+ self.periodicTaskPipelineCheckTimer = [NSTimer timerWithTimeInterval: 5 .0f target: self selector: @selector (periodicTaskPipelineCheckTimerFired: ) userInfo: self repeats: YES ];
34
+
35
+ [[NSRunLoop mainRunLoop ] addTimer: self .periodicTaskPipelineCheckTimer forMode: NSDefaultRunLoopMode ];
22
36
}
23
37
return self;
24
38
}
@@ -40,13 +54,16 @@ - (TaskItem *) makeTaskItemWithExecutable:(NSString *)executableName functionNam
40
54
}
41
55
42
56
57
+
58
+
43
59
- (void ) addTaskItem : (TaskItem *)taskItem
44
60
{
45
61
[self .taskItemsArray addObject: taskItem];
46
62
}
47
63
48
64
49
65
66
+
50
67
- (void ) configureTaskPipes
51
68
{
52
69
TaskItem * firstTaskItem = [self .taskItemsArray firstObject ];
@@ -90,6 +107,8 @@ - (void) configureTaskPipes
90
107
}
91
108
92
109
110
+
111
+
93
112
- (void ) startTasks
94
113
{
95
114
for (TaskItem * taskItem in self.taskItemsArray )
@@ -113,6 +132,8 @@ - (void) startTasks
113
132
}
114
133
115
134
135
+
136
+
116
137
- (void ) terminateTasks
117
138
{
118
139
// NSArray * reversedTaskItemsArray = [[self.taskItemsArray reverseObjectEnumerator] allObjects];
@@ -131,6 +152,39 @@ - (void) terminateTasks
131
152
}
132
153
133
154
155
+
156
+ - (void ) periodicTaskPipelineCheckTimerFired : (NSTimer *)timer
157
+ {
158
+ BOOL failedTaskFound = NO ;
159
+ TaskItem * failedTaskItem = NULL ;
160
+
161
+ for (TaskItem * taskItem in self.taskItemsArray )
162
+ {
163
+ if (taskItem.task .isRunning == NO )
164
+ {
165
+ failedTaskFound = YES ;
166
+ failedTaskItem = taskItem;
167
+ break ;
168
+ }
169
+ }
170
+
171
+ if (failedTaskFound == YES )
172
+ {
173
+ NSLog (@" TaskPipelineManager - TaskPipelineFailed - %@ - %@ " , failedTaskItem, self.taskItemsArray );
174
+
175
+ [[NSNotificationCenter defaultCenter ] postNotificationName: @" TaskPipelineFailedNotification" object: self ];
176
+
177
+ [self terminateTasks ];
178
+
179
+ AppDelegate * appDelegate = (AppDelegate *)[NSApp delegate ];
180
+
181
+ [appDelegate updateCurrentTasksText ];
182
+ }
183
+ }
184
+
185
+
186
+
187
+
134
188
- (NSString *)tasksInfoString
135
189
{
136
190
NSMutableString * tasksInfoString = [NSMutableString stringWithString: @" \n\n " ];
0 commit comments