예제 #1
0
        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);
            }));
        }
예제 #2
0
        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;
                }
            }
        }
예제 #3
0
            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();
            }