func startNextJob(event *models.Event, node *models.Node, job *models.Job, scheduler scheduling.Scheduler, eventQueue *models.EventQueue) { node.CurJob = job node.EstCompletion = event.Time + scheduler.GetAllocation(job) completeTime := event.Time + job.RealExec if job.AbsoluteDeadline() < node.EstCompletion && job.AbsoluteDeadline() < completeTime { heap.Push(eventQueue, &models.Event{ Job: job, Time: job.AbsoluteDeadline(), Node: node, Type: models.Miss, }) } else if node.EstCompletion < completeTime { heap.Push(eventQueue, &models.Event{ Job: job, Time: node.EstCompletion, Node: node, Type: models.Stretch, }) } else { heap.Push(eventQueue, &models.Event{ Job: event.Job, Time: completeTime, Node: node, Type: models.Complete, }) } }