private void addSendToTemporaryWorkerMenuItem() { jobQueue.AddMenuItem("Run in new temporary worker", null, new MultiJobHandler( delegate(List <TaggedJob> jobs) { // find a good name int number = 0; string name; do { number++; name = "Temporary worker " + number; } while (workers.ContainsKey(name)); JobWorker w = NewWorker(name, false); foreach (TaggedJob j in jobs) { ReleaseJob(j); w.AddJob(j); } this.refresh(); w.Mode = JobWorkerMode.CloseOnLocalListCompleted; w.StartEncoding(true); })); }
private void loadJobLists() { string path = Path.Combine(mainForm.MeGUIPath, "joblists.xml"); JobListSerializer s = Util.XmlDeserializeOrDefault <JobListSerializer>(path); jobQueue.JobList = toJobList(s.mainJobList); foreach (Pair <string, List <string> > p in s.workersAndTheirJobLists) { JobWorkerMode mode = JobWorkerMode.RequestNewJobs; bool bIsTemporaryWorker = false; if (p.fst.StartsWith("Temporary worker ")) { if (p.snd.Count == 0) { continue; } mode = JobWorkerMode.CloseOnLocalListCompleted; bIsTemporaryWorker = true; } JobWorker w = NewWorker(p.fst, false); w.Mode = mode; w.IsTemporaryWorker = bIsTemporaryWorker; // check if there are any unassigned jobs which belongs to this worker foreach (TaggedJob oJob in allJobs.Values) { if (w.Name.Equals(oJob.OwningWorker) && !p.snd.Contains(oJob.Name)) { p.snd.Add(oJob.Name); } } IEnumerable <TaggedJob> list = toJobList(p.snd); foreach (TaggedJob j in list) { w.AddJob(j); } } // check if there are any assigned jobs which have no existing worker foreach (TaggedJob oJob in allJobs.Values) { if (oJob.OwningWorker != null && !workers.ContainsKey(oJob.OwningWorker)) { oJob.OwningWorker = null; } } }
public void handleEvent(List <TaggedJob> jobs) { foreach (TaggedJob j in jobs) { if (j.Status == JobStatus.PROCESSING) { MessageBox.Show("Can't move '" + j.Name + "' because it is currently processing.", "Can't move job", MessageBoxButtons.OK, MessageBoxIcon.Warning); continue; } if (j.OwningWorker == w.Name) { continue; } c.ReleaseJob(j); w.AddJob(j); j.OwningWorker = w.Name; } c.refresh(); }