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); })); }
internal void ShutDown(JobWorker w) { workers.Remove(w.Name); if (w.Visible) { w.Close(); } summary.Remove(w.Name); }
internal void ShutDown(JobWorker w) { workers.Remove(w.Name); if (w.Visible) { Util.ThreadSafeRun(w, delegate { w.Close(); }); } summary.Remove(w.Name); }
private JobWorker NewWorker(string name, bool show) { Debug.Assert(!workers.ContainsKey(name)); JobWorker w = new JobWorker(mainForm); w.Name = name; w.WorkerFinishedJobs += new EventHandler(WorkerFinishedJobs); workers.Add(w.Name, w); summary.Add(w); mainForm.RegisterForm(w); return(w); }
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; } } }
/// <summary> /// created a new worker /// </summary> /// <param name="name">prefix of the worker name</param> /// <returns>the new worker</returns> private JobWorker NewWorker(string prefix) { int num = 0; string name; do { name = prefix + " " + ++num; } while (workers.ContainsKey(name)); JobWorker w = new JobWorker(mainForm); w.Name = name; w.WorkerFinishedJobs += new EventHandler(WorkerFinishedJobs); workers.Add(w.Name, w); summary.Add(w); return(w); }
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) { JobWorker w = NewWorker(p.fst, false); IEnumerable <TaggedJob> list = toJobList(p.snd); w.Jobs = list; foreach (TaggedJob j in list) { j.OwningWorker = w.Name; } } }
internal void RequestNewWorker() { string name = InputBox.Show("Please enter a name for this new worker", "Please enter a name", freeWorkerName()); if (string.IsNullOrEmpty(name)) { return; } if (workers.ContainsKey(name)) { MessageBox.Show("A worker by this name already exists. Adding worker failed", "Adding worker failed", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } JobWorker w = NewWorker(name, true); w.StartEncoding(true); }
/// <summary> /// adds the "run in new temporary worker" menu item /// </summary> private void AddSendToTemporaryWorkerMenuItem() { globalJobQueue.AddMenuItem("Run in new temporary worker", null, new MultiJobHandler( delegate(List <TaggedJob> jobs) { JobWorker w = NewWorker("Temporary worker"); foreach (TaggedJob j in jobs) { if (j.Status != JobStatus.WAITING) { continue; } AssignJob(j, w.Name); } RefreshStatus(); w.Mode = JobWorkerMode.CloseOnLocalListCompleted; w.IsTemporaryWorker = true; w.StartEncoding(true); })); }
internal void RenameWorker(string name, string value) { if (workers.ContainsKey(value)) { throw new NameTakenException(value); } JobWorker w = workers[name]; w.Name = value; workers.Remove(name); workers[value] = w; summary.Rename(name, value); foreach (TaggedJob job in allJobs.Values) { if (name == job.OwningWorker) { job.OwningWorker = value; } } }
public SendToWorkerThunk(JobWorker w, JobControl c) { this.c = c; this.w = w; }
public void ShutDown(JobWorker w) { workers.Remove(w.Name); summary.Remove(w.Name); }