Example #1
0
        public List <SingleRunJob> GetNextJobs(int num)
        {
            List <double> toPostList = _theTracer.GetNextImsToPost(num);
            List <int>    prioriList = _theTracer.GetNextPriosToPost(num, NWorkers);
            var           jobs       = new List <SingleRunJob>(num);
            int           i;

            for (i = 0; i < num; i++)
            {
                jobs.Add(null);
            }
            i = 0;
            foreach (var im in toPostList)
            {
                if (Math.Abs(im) < 1e-6)
                {
                    break;
                }
                var job = new SingleRunJob(SubFolder, Model, Record, im, prioriList[i])
                {
                    MyIdaJob = this
                };
                jobs[i] = job;
                i++;
            }
            return(jobs);
        }
Example #2
0
 public void SetResult(SingleRunJob job, IdaPoint resPnt, out bool cancelPool, out bool deleteMe)
 {
     NWorkers--;
     _theTracer.UpdateStatus(ref resPnt, job.TheStatus);
     deleteMe   = false;
     cancelPool = false;
     if (NWorkers <= 1)
     {
         deleteMe = true;
         _theTracer.EndTracing();
         return;
     }
     if (_theTracer.StageChanged)
     {
         //we must delete posted jobs before execution
         cancelPool = true;
     }
 }
Example #3
0
        public static bool SetResultString(string result, out SingleRunJob job, out IdaPoint pnt)
        {
            // model record im edp endTime dvrgFlg
            job = null;
            pnt = null;
            var resList = result.Split(' ').ToList();

            if (resList.Count < 2)
            {
                return(false);
            }
            var model = resList[0];
            var rec   = resList[1];
            var im    = Convert.ToDouble(resList[2]);

            job = JobPool.GetJob(model, rec, im);
            if (job.TheStatus != SingleRunJob.Status.Cancelled)
            {
                job.TheStatus = SingleRunJob.Status.Recieved;
            }
            else
            {
                job.TheStatus = SingleRunJob.Status.CancelRecieved;
            }

            pnt = new IdaPoint
            {
                Im              = Convert.ToDouble(resList[2]),
                Edp             = Convert.ToDouble(resList[3]),
                AnalysisEndTime = Convert.ToDouble(resList[4]),
                DivergFlag      = Convert.ToInt16(resList[5]) != 0
            };
            IdaJob toDelete = null;
            var    jobList  = IdaJobPool.Where(idajob => idajob.Model == model && idajob.Record == rec).ToArray();

            if (!jobList.Any())
            {
                throw new Exception("IDAJob not found");
            }
            var  idaJob = jobList.ElementAt(0);
            bool cancel;
            bool deleteMe;

            idaJob.SetResult(job, pnt, out cancel, out deleteMe);
            if (cancel)
            {
                JobPool.CancelJobs(idaJob);
            }
            if (deleteMe)
            {
                toDelete = idaJob;
                Logger.LogIdaFinished(idaJob);
            }
            if (toDelete != null)
            {
                IdaJobPool.Remove(toDelete);
                if (LoadedJobsPool.Count == 0)
                {
                    return(IdaJobPool.Count == 0);
                }
                IdaJobPool.Add(LoadedJobsPool[0]);
                LoadedJobsPool.RemoveAt(0);
            }
            return(IdaJobPool.Count == 0);
        }
Example #4
0
        public static void AddJob(SingleRunJob job)
        {
            var i = JobList.TakeWhile(oldJob => job.Priority >= oldJob.Priority).Count();

            JobList.Insert(i, job);
        }
Example #5
0
 public static void LogResultRecieved(SingleRunJob job, IdaPoint pnt)
 {
     //Log(string.Format("New result (model= {0}, record= {1}, IM= {2})", job.Model, job.Record, job.Im));
 }
Example #6
0
 internal static void LogJobSent(SingleRunJob job, IdaClient idaClient)
 {
     //Log(string.Format("New job (model= {0}, record= {1}, IM= {2}) was sent to {3} computer", job.Model, job.Record, job.Im, idaClient.Name));
 }