MCPcopy Index your code
hub / github.com/codnect/chrono / run

Method run

executor.go:164–219  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

162}
163
164func (executor *SimpleTaskExecutor) run() {
165
166 for {
167 executor.taskQueue.SorByTriggerTime()
168
169 if len(executor.taskQueue) == 0 {
170 executor.timer.Stop()
171 } else {
172 executor.timer.Reset(executor.taskQueue[0].getDelay())
173 }
174
175 for {
176 select {
177 case clock := <-executor.timer.C:
178 executor.timer.Stop()
179
180 taskIndex := -1
181 for index, scheduledTask := range executor.taskQueue {
182
183 if scheduledTask.triggerTime.After(clock) || scheduledTask.triggerTime.IsZero() {
184 break
185 }
186
187 taskIndex = index
188
189 if scheduledTask.IsCancelled() {
190 continue
191 }
192
193 if scheduledTask.isPeriodic() && scheduledTask.isFixedRate() {
194 scheduledTask.triggerTime = scheduledTask.triggerTime.Add(scheduledTask.period)
195 }
196
197 executor.startTask(scheduledTask)
198 }
199
200 executor.taskQueue = executor.taskQueue[taskIndex+1:]
201 case newScheduledTask := <-executor.newTaskChannel:
202 executor.timer.Stop()
203 executor.taskQueue = append(executor.taskQueue, newScheduledTask)
204 case rescheduledTask := <-executor.rescheduleTaskChannel:
205 executor.timer.Stop()
206 executor.taskQueue = append(executor.taskQueue, rescheduledTask)
207 case stoppedChan := <-executor.shutdownChannel:
208 executor.timer.Stop()
209 executor.taskWaitGroup.Wait()
210 stoppedChan <- true
211 return
212 }
213
214 break
215 }
216
217 }
218
219}
220
221func (executor *SimpleTaskExecutor) startTask(scheduledRunnableTask *ScheduledRunnableTask) {

Callers 1

NewSimpleTaskExecutorFunction · 0.95

Calls 6

startTaskMethod · 0.95
SorByTriggerTimeMethod · 0.80
getDelayMethod · 0.80
isPeriodicMethod · 0.80
isFixedRateMethod · 0.80
IsCancelledMethod · 0.65

Tested by

no test coverage detected