예제 #1
0
        public void WorkIsOver2(ResultController rc)
        {
            string msg   = rc.GenerateMessage();
            string title = rc.GenereateTitle();

            List <OutputSupertype> ooo = null;

            if (rc.globalWorkRes == WorkResult.NothingHappens)
            {
                //ooo = this.critMessages;
                ooo = this.averageMessages;
            }
            else
            {
                ooo = this.critMessages;
            }

            if (this.testmode)
            {
                ooo = this.emptyMessages;
            }

            foreach (OutputSupertype output in ooo)
            {
                output.WorkIsOver(msg, title);
            }
        }
        //когда заканчивается парсинг xml-файла, необходимо выполнить все задания из него по очереди
        public ResultController StartExchange()
        {
            ResultController sessionRC = new ResultController("Выполнение сессии");

            foreach (PlannerTask oneTask in tasks)
            {
                //успешно ли выполнилось текуще задание
                bool taskRes = true;

                DateTime startDT = GlobalUtils.GetNowUtcDateTime();

                if (!oneTask.isFake)
                {
                    //сперва смотрим, нужно ли выполнять данный таск
                    if (this.los.CheckTaskExecute(oneTask.id, oneTask.period))
                    {
                        //сообщения отправляет класс LogOfSuccession
                        //это сделано потому, что сообщения, преденные системе вывода могут быть разными
                        //и в то же время этому коду нужно знать, продолжать выполнение задания или нет
                        continue;
                    }

                    ResultController tmpResContr = oneTask.TaskStartsExchange(this.prx, sessionRC);
                    taskRes = ActionResult.IsResultIsNotError(tmpResContr.globalWorkRes);
                    sessionRC.AddInnerController(tmpResContr);
                    this.los.SaveTaskResult(oneTask.id, taskRes, startDT);
                }
            }

            //даем команду сохранить все в логах проверки запуска
            this.los.WorkIsOver();
            this.outputs.WorkIsOver2(sessionRC);

            return(sessionRC);
        }
예제 #3
0
 public void AddInnerController(ResultController rc)
 {
     this.innerControllers.Add(rc);
     this.globalWorkRes = ActionResult.CompareTwoResults(this.globalWorkRes, rc.globalWorkRes);
     foreach (KeyValuePair <ActionType, ActionResult> resTypes in rc.resultsByTypes)
     {
         this.resultsByTypes[resTypes.Key].MergeResults(resTypes.Value);
     }
 }
예제 #4
0
        //все задания могут содержать несколько источников и назначений
        //сначала на локальный компьютер передаются файлы из источников, а затем
        //они передаются в назначения
        public ResultController TaskStartsExchange(MyProxy prx, ResultController sessionResultController)
        {
            ResultController taskResultController = new ResultController("Выполнение задачи " + this.id);

            ControllerOfOutput outputs = ControllerOfOutput.Instance;

            //LogOfSuccession los = LogOfSuccession.Instance;
            //bool success = true;

            try
            {
                this.ClearTmpDir();

                //Если есть роуты, добавляем их
                foreach (CmdRoute rt in taskRouts)
                {
                    BatchRunner.AddRoute(rt.destination, rt.subnetMask, rt.gateway);
                }

                List <FileSupertype> downloadFiles = uploadDownload.FindAll(x => x.source_dest == ActionType.Source);
                List <FileSupertype> uploadFiles   = uploadDownload.FindAll(x => x.source_dest == ActionType.Destination);

                foreach (FileSupertype dfile in downloadFiles)
                {
                    ActionResult tmpRes = dfile.StartFileAction(prx);
                    taskResultController.AddAction(tmpRes);
                }

                foreach (FileSupertype ufile in uploadFiles)
                {
                    ActionResult tmpRes = ufile.StartFileAction(prx);
                    taskResultController.AddAction(tmpRes);
                }
                this.ClearTmpDir();
            }
            catch (Exception ex)
            {
                outputs.WriteErrors(ex.Message);
            }
            return(taskResultController);
        }