public bool ScheduleJob(IJob job) { if (_inProcessTools.ContainsKey(job)) { return(false); } var tools = new HashSet <IToolInstance>(); _inProcessTools.Add(job, tools); var toolSchedules = new HashSet <IScheduledTool>(); _inProcessToolSchedules.Add(job, toolSchedules); foreach (var tool in job.RequiredToolSet) { var next = GetNextTool(tool); if (next == null) { return(false); } tools.Add(next); var scheduledTool = new ScheduledTool(next, job.ScheduledStartTime, job.ScheduledEndTime, job); toolSchedules.Add(scheduledTool); _inProcessJobs.Add(next, job); _toolAvailableStates[tool][next.ID] = false; } return(true); }
public bool ScheduleJob(IJob job) { if (_inProcessTools.ContainsKey(job)) return false; var tools = new HashSet<IToolInstance>(); _inProcessTools.Add(job, tools); var toolSchedules = new HashSet<IScheduledTool>(); _inProcessToolSchedules.Add(job, toolSchedules); foreach (var tool in job.RequiredToolSet) { var next = GetNextTool(tool); if (next == null) return false; tools.Add(next); var scheduledTool = new ScheduledTool(next, job.ScheduledStartTime, job.ScheduledEndTime, job); toolSchedules.Add(scheduledTool); _inProcessJobs.Add(next, job); _toolAvailableStates[tool][next.ID] = false; } return true; }