Exemple #1
0
        private void ParseTxtFile(string fileName)
        {
            bool fileFound = File.Exists(fileName);

            if (!fileFound)
            {
                fileName  = Path.Combine(Environment.CurrentDirectory, fileName);
                fileFound = File.Exists(fileName);
                if (!fileFound)
                {
                    ColorConsole.WriteLineRed("Task file not found.");
                    return;
                }
            }

            var fileLines = File.ReadAllLines(fileName);
            int jobId     = 0;

            foreach (var line in fileLines)
            {
                jobId++;
                var job = new ProcessJobMessage(line, jobId);
                _jobsToProcessed.Add(job);
            }
        }
Exemple #2
0
        private void HandleScheduleAllJobs()
        {
            _jobsToProcessed.Clear();
            foreach (var taskItem in this.jobManagerViewModel.Tasks)
            {
                var job = new ProcessJobMessage(taskItem.Description, taskItem.TaskID, taskItem.TimeOut, Self);
                _jobsToProcessed.Add(taskItem.TaskID, job);
            }

            // schedule jobs
            Context.System.Scheduler.Advanced.ScheduleRepeatedly(TimeSpan.FromSeconds(4), TimeSpan.FromSeconds(10), () =>
            {
                if (_jobsToProcessed.Count > 0)
                {
                    if (_api.Ask <Routees>(new GetRoutees()).Result.Members.Any())
                    {
                        var currentJobMsg = _jobsToProcessed.Values.ElementAt(0);
                        _api.Tell(currentJobMsg);
                        //  _jobsToProcessed.Remove(currentJobMsg.ID);
                    }
                }
            });

            // create scheduler for uprocessed jobs
            _jobScheduler = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(
                TimeSpan.FromMinutes(_initialDelayInMinutes),         //initial delay in minutes
                TimeSpan.FromSeconds(_intervalInSeconds),             // interval
                Self,
                new ProcessUnfinishedJobs(),
                Self);
        }
Exemple #3
0
        private void Ready()
        {
            ColorConsole.WriteLineGreen("Commander's current state is Ready.");

            Receive <ProcessJobMessage>(job =>
            {
                _currentJob = job;

                // ask the coordinator for job
                _coordinator.Tell(new CanAcceptJobMessage(job.Description, job.ID));

                // move to next state
                BecomeAsking();
            });

            Receive <JobCompletedMessage>(job =>
            {
                // send response to client
                _currentJob.Client.Tell(job);

                ColorConsole.WriteLineGreen($"Task {job.ID} is completed by commander.");
            });

            Receive <JobFailedMessage>(job =>
            {
                // send response to client
                _currentJob.Client.Tell(job);

                ColorConsole.WriteLineGreen($"Task {job.ID} is failed.");
            });
        }
        private void Ready()
        {
            ColorConsole.WriteLineGreen("Commander's current state is Ready.");

            Receive <ProcessJobMessage>(job =>
            {
                ColorConsole.WriteLineWhite($"Commander has received Task {job.ID}.{job.Description} for processing.");
                _currentJob = job;

                // ask the coordinator for job
                _coordinator.Tell(new CanAcceptJobMessage(job.Description, job.ID));

                // move to next state
                BecomeAsking();
            });

            Receive <JobCompletedMessage>(job =>
            {
                // send response to parent
                _currentJob.Client.Tell(job);

                _logger.Debug($"Task {job.ID} is completed by commander and {Sender.Path.Name}.");
            });

            Receive <JobFailedMessage>(job =>
            {
                // send response to parent
                _currentJob.Client.Tell(job);

                _logger.Debug("Commander has received JobFailedMessage from {0} for Task ID: {1}",
                              Sender.Path.Name, job.ID);

                ColorConsole.WriteLineGreen($"Task {job.ID} is failed.");
            });
        }
Exemple #5
0
 private void HandleProcessJob()
 {
     if (_jobsToProcessed.Count > 0)
     {
         _currentJobMsg = _jobsToProcessed[0];
         Context.ActorSelection(ActorPaths.ValidatorActor.Path).Ask(_currentJobMsg.Description).PipeTo(Self);
         _jobsToProcessed.RemoveAt(0);
     }
     else
     {
         ColorConsole.WriteLineYellow("All jobs are processed from job pool queue..");
         _jobScheduler.Cancel();
     }
 }