コード例 #1
0
 public MyProcessManager(ISimpleLogger simpleLogger, IProcessWatcher processWatcher, IProcessAdapter processAdapter)
 {
     this.simpleLoger    = simpleLogger;
     this.processWatcher = processWatcher;
     this.processAdapter = processAdapter;
     processList         = new List <IProcessItem>();
 }
コード例 #2
0
ファイル: ProcessActor.cs プロジェクト: eaardal/delbert
        public ProcessActor(IProcessAdapter process, ILogger log)
            : base(log)
        {
            if (process == null) throw new ArgumentNullException(nameof(process));
            _process = process;

            Receive<StartProcessForFile>(msg => OnStartProcessForFile(msg));
        }
コード例 #3
0
 void DoWork()
 {
     processWatcher              = new MyProcessWatcher();
     simpleLogger                = new MySimpleLogger();
     processAdapeter             = new MyProcessAdapter();
     processManager              = new MyProcessManager(simpleLogger, processWatcher, processAdapeter);
     processManager.ListChanged += HandleListChanged;
     processManager.Load();
     processManager.StartWatch();
 }
コード例 #4
0
ファイル: ProcessActor.cs プロジェクト: eaardal/delbert
        public ProcessActor(IProcessAdapter process, ILogger log) : base(log)
        {
            if (process == null)
            {
                throw new ArgumentNullException(nameof(process));
            }
            _process = process;

            Receive <StartProcessForFile>(msg => OnStartProcessForFile(msg));
        }
コード例 #5
0
        /// <summary>   Gets process model. </summary>
        ///
        /// <param name="process">  The process. </param>
        ///
        /// <returns>   The process model. </returns>

        public IProcessModel GetProcessModel(IProcessAdapter process)
        {
            Id              = process.Id;
            Name            = process.ProcessName;
            RamUsage        = process.WorkingSet64;
            Priority        = process.BasePriority;
            CpuUsageTime    = process.TotalProcessorTime;
            RunningTime     = Clock.Now - process.StartTime;
            CpuUsagePercent = 100 * process.TotalProcessorTime.TotalMilliseconds / RunningTime.TotalMilliseconds;
            return(this);
        }
コード例 #6
0
        /// <summary>
        /// runs the ParallelRunner process after initialization
        /// </summary>
        /// <param name="proc"></param>
        /// <param name="enableRedirection"></param>
        private int RunProcess(IProcessAdapter proc)
        {
            proc.Start();

            proc.WaitForExit(PollingTimeMs);

            while (!_runCancelled() && !proc.HasExited)
            {
                proc.WaitForExit(PollingTimeMs);
            }

            return(proc.ExitCode);
        }
コード例 #7
0
 /// <summary>
 /// Class constructor.
 /// </summary>
 /// <param name="processAdapter">WorkflowAdapter</param>
 /// <param name="logger">logger</param>
 /// <param name="localizer">Dico pour les locales</param>
 public ProcessController(
     IProcessAdapter processAdapter,
     ILogger <ProcessController> logger,
     IStringLocalizer <SharedResource> localizer,
     IServiceProvider serviceProvider,
     IOptions <AppSettings> appSettings)
 {
     _processAdapter  = processAdapter;
     _logger          = logger;
     _localizer       = localizer;
     _serviceProvider = serviceProvider;
     _appSettings     = appSettings;
 }
コード例 #8
0
        /// <summary>
        /// runs the ParallelRunner process after initialization
        /// </summary>
        /// <param name="proc"></param>
        /// <param name="enableRedirection"></param>
        private int RunProcess(IProcessAdapter proc)
        {
            ConsoleWriter.WriteLine(Properties.Resources.ParallelRunMessages + "\n-------------------------------------------------------------------------------------------------------");

            proc.Start();

            proc.WaitForExit(PollingTimeMs);

            while (!_runCancelled() && !proc.HasExited)
            {
                proc.WaitForExit(PollingTimeMs);
            }

            ConsoleWriter.WriteLine("-------------------------------------------------------------------------------------------------------");

            return(proc.ExitCode);
        }
コード例 #9
0
        /// <summary>
        /// executes the run of the test by using the Init and RunProcss routines
        /// </summary>
        /// <param name="fileName">the prcess file name</param>
        /// <param name="arguments">the arguments for the process</param>
        /// <param name="failureReason"> the reason why the process failed </param>
        /// <returns> the exit code of the process </returns>
        private int ExecuteProcess(string fileName, string arguments, ref string failureReason)
        {
            IProcessAdapter processAdapter = ProcessAdapterFactory.CreateAdapter(GetProcessTypeForCurrentSession(fileName, arguments));

            if (processAdapter == null)
            {
                failureReason = "Could not create ProcessAdapter instance!";
                return((int)ParallelRunResult.Error);
            }

            try
            {
                int exitCode = RunProcess(processAdapter);

                if (_runCancelled())
                {
                    if (!processAdapter.HasExited)
                    {
                        processAdapter.Kill();
                        return((int)ParallelRunResult.Canceled);
                    }
                }

                return(exitCode);
            }
            catch (Exception e)
            {
                failureReason = e.Message;
                return((int)ParallelRunResult.Error);
            }
            finally
            {
                if (processAdapter != null)
                {
                    processAdapter.Close();
                }
            }
        }