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 #2
0
        public JobPoolControllerActor(IActorRef commanderActor)
        {
            _commander = commanderActor;
            Receive <ProcessFileMessage>(msg => InitializeJobs(msg.FileName));
            Receive <ProcessJob>(job => HandleProcessJob());

            Receive <JobValidationSucceedMessage>(msg =>
            {
                _commander.Tell(new CanAcceptJobMessage(_currentJobMsg.Description, _currentJobMsg.ID));
            });

            Receive <JobValidationFailedMessage>(msg =>
            {
                ColorConsole.WriteLineRed("Invalid Task : {0} {1}", _currentJobMsg.ID, _currentJobMsg.Description);
            });

            Receive <AbleToAcceptJobMessage>(job =>
            {
                ColorConsole.WriteLineGreen("Commander {0} is able to accept job {1}. {2}", _commander.Path.Name, job.ID, job.Description);
                _commander.Tell(new BeginJobMessage(job.Description, job.ID));
            });

            Receive <UnableToAcceptJobMessage>(job =>
            {
                ColorConsole.WriteLineGreen("Commander {0} is unable to accept job {1}. {2}", _commander.Path.Name, job.ID, job.Description);
            });

            Receive <JobCompletedMessage>(job => HandleJobCompleted(job));
            Receive <JobFailedMessage>(job => HandleJobFailed(job));
            Receive <UpdateJobStatastics>(message => HandleUpdateJobStatastics());
        }
Exemple #3
0
        private void Waiting()
        {
            _logger.Debug("Cordinator {0}'s current state is Waiting", Self.Path.Name);
            ColorConsole.WriteLineYellow("Coordinator {0} state is - Waiting.", Self.Path.Name);

            // Received CanAcceptJobMessage from coordinator
            Receive <CanAcceptJobMessage>(job =>
            {
                _logger.Debug("Cordinator {0} received CanAcceptJobMessage while in waiting state from {1} for Task ID: {2}",
                              Self.Path.Name, Sender.Path.Name, job.ID);

                Sender.Tell(new AbleToAcceptJobMessage(job.Description, job.ID));
            });

            // Received BeginJobMessage from coordinator
            Receive <JobStartedMessage>(job =>
            {
                _logger.Debug("Cordinator {0} received BeginJobMessage from {1} for Task ID: {2}",
                              Self.Path.Name, Sender.Path.Name, job.ID);

                ColorConsole.WriteLineGreen("Task {0} is processing by coordinator {1}.", job.ID, Self.Path.Name);
                // move to next state first
                BecomeWorking();

                // ask the worker for job
                _taskWorker.Tell(job);
            });
        }
Exemple #4
0
        private void StopPlayingMovie()
        {
            string temp = _currentlyWatching;

            _currentlyWatching = null;
            ColorConsole.WriteLineGreen($"User:{_userId} has stopped watching {temp}.");

            Become(Stopped);
        }
Exemple #5
0
        private void StartPlayingMovie(string title)
        {
            _currentlyWatching = title;
            ColorConsole.WriteLineGreen($"User:{_userId} is watching {title}.");

            Context
            .ActorSelection("/user/Playback/PlaybackStatistics/MoviePlayCounter")
            .Tell(new IncrementPlayCountMessage(title));

            Become(Playing);
        }
        public PlaybackActor()
        {
            _userCoordinator = Context.ActorOf(Props.Create <UserCoordinatorActor>(), "UserCoordinator");
            _statistics      = Context.ActorOf(Props.Create <PlaybackStatisticsActor>(), "PlaybackStatistics");


            Receive <PlayMovieMessage>(message =>
            {
                ColorConsole.WriteLineGreen(
                    $"PlaybackActor received PlayMovieMessage '{message.MovieTitle}' for user {message.UserId}");
                _userCoordinator.Tell(message);
            });
        }
        public JobPoolControllerActor(IActorRef commanderActor)
        {
            _commander = commanderActor;
            Receive <ProcessFileMessage>(msg => InitializeJobs(msg.FileName));
            Receive <UnableToAcceptJobMessage>(job =>
            {
                ColorConsole.WriteLineRed($"Commander {Sender.Path} is unable to perform Task : {job.Description}");
                if (!_jobsToProcessed.ContainsKey(job.ID))
                {
                    if (_taskList[job.ID].Status == JobStatus.NotStarted)
                    {
                        _jobsToProcessed.Add(job.ID, new ProcessJobMessage(job.Description, job.ID, Self));
                    }
                }
            });

            Receive <JobStartedMessage>(job =>
            {
                ColorConsole.WriteLineGreen($"Task {job.ID}. {job.Description} has started by {Sender.Path} at {job.ProcessedTime}");
                var task       = _taskList[job.ID];
                task.StartTime = job.ProcessedTime;
                task.Status    = JobStatus.Started;
                if (null == _stopWatch)
                {
                    _stopWatch = new Stopwatch();
                    _stopWatch.Start();
                }
                // update UI
            });

            Receive <JobCompletedMessage>(job =>
            {
                ColorConsole.WriteLineYellow($"Task {job.ID}. {job.Description} has completed succesfully at {job.ProcessedTime} by {Sender.Path} in {job.Duration} ms.");
                var task      = _taskList[job.ID];
                task.EndTime  = job.ProcessedTime;
                task.Duration = job.Duration;
                task.Status   = JobStatus.Completed;
                // update UI
            });

            Receive <JobFailedMessage>(job =>
            {
                ColorConsole.WriteLineRed($"Commander {Sender.Path} is unable to perform Task : {job.Description} because {job.Status.ToString()}");
                _taskList[job.ID].Status = job.Status;
                // update UI
            });

            Receive <ProcessUnfinishedJobs>(msg => HandleProcessUnFinishedJobs(msg));
        }
Exemple #8
0
        private void Waiting()
        {
            ColorConsole.WriteLineYellow("Coordinator {0} state is - Waiting.", Self.Path.Name);

            // Received CanAcceptJobMessage from coordinator
            Receive <CanAcceptJobMessage>(job =>
            {
                Sender.Tell(new AbleToAcceptJobMessage(job.Description, job.ID));
            });

            // Received BeginJobMessage from coordinator
            Receive <JobStartedMessage>(job =>
            {
                ColorConsole.WriteLineGreen("Task {0} is processing by coordinator {1}.", job.ID, Self.Path.Name);
                // move to next state first
                BecomeWorking();

                _parent = Sender;
                // ask the worker for job
                _taskWorker.Tell(job);
            });
        }
        private void Ready()
        {
            ColorConsole.WriteLineGreen("Commander's current state is Ready.");

            Receive <CanAcceptJobMessage>(job =>
            {
                // ask the coordinator for job
                _coordinator.Tell(job);
                _currentJobID          = job.ID;
                _currentJobDescription = job.Description;

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

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

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

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

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

            // recived ProcessStashedJobs request from scheduler
            // Receive<ProcessStashedJobs>(job => HandleUnstashJobs());
        }
Exemple #10
0
 protected override void PreStart()
 {
     ColorConsole.WriteLineGreen(string.Format("{0} PreStart", this.GetType().Name));
 }
Exemple #11
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineGreen("UserActor {0} PostRestart because exception of type '{1}' was thrown: ", UserID, reason.GetType());
     base.PostRestart(reason);
 }
Exemple #12
0
 protected override void PostStop() => ColorConsole.WriteLineGreen("PlaybackActor PostStop");
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineGreen("UserActor PostRestart because " + reason);
     base.PostRestart(reason);
 }
 protected override void PostStop()
 {
     ColorConsole.WriteLineGreen("UserActor PostStop");
 }
 private void StopPlayingMovie()
 {
     ColorConsole.WriteLineGreen("User had stopped watching the movie");
     Become(Stopped);
 }
Exemple #16
0
        protected override void PostRestart(Exception reason)
        {
            ColorConsole.WriteLineGreen(string.Concat("PlaybackActor PostRestart because: ", reason));

            base.PostRestart(reason);
        }
Exemple #17
0
        protected override void PreRestart(Exception reason, object message)
        {
            ColorConsole.WriteLineGreen(string.Concat("PlaybackActor PreRestart because: ", reason));

            base.PreRestart(reason, message);
        }
Exemple #18
0
 protected override void PostStop()
 {
     ColorConsole.WriteLineGreen(string.Format("{0} PostStop", this.GetType().Name));
 }
Exemple #19
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineGreen(string.Format("{0} PostRestart because {1}", this.GetType().Name, reason));
     base.PostRestart(reason);
 }
Exemple #20
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineGreen($"PlaybackActor PostRestart because: {reason}");
     base.PostRestart(reason);
 }
Exemple #21
0
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineGreen($"PlaybackActor PreRestart because: {reason}");
     base.PreRestart(reason, message);
 }
Exemple #22
0
 private void HandleJobCompleted(JobCompletedMessage job)
 {
     _succeedJobs.Add(job);
     ColorConsole.WriteLineGreen("Task {0}. {1} completed succesfully in {2} ms", job.ID, job.Description, job.Duration);
     Self.Tell(new UpdateJobStatastics());
 }
Exemple #23
0
 private void ProcessRestartingMessage(Restarting msg)
 {
     ColorConsole.WriteLineGreen("ChildActor Restarting");
 }
Exemple #24
0
        protected override void PostRestart(Exception reason)
        {
            ColorConsole.WriteLineGreen("Playback PostRestart " + reason);

            base.PostRestart(reason);
        }
 protected override void PreStart()
 {
     ColorConsole.WriteLineGreen("UserActor PreStart");
 }
Exemple #26
0
 protected override void PostStop()
 {
     ColorConsole.WriteLineGreen("MoviePlayCounterActor PostStop");
 }
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineGreen("UserActor PreRestart because " + reason);
     base.PreRestart(reason, message);
 }
Exemple #28
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineGreen("MoviePlayCounterActor PostRestart because exception of type '{0}' was thrown: ", reason.GetType());
     base.PostRestart(reason);
 }
Exemple #29
0
 protected override void PreStart()
 {
     ColorConsole.WriteLineGreen("MoviePlayCounterActor PreStart");
 }
Exemple #30
0
 protected override void PreStart() => ColorConsole.WriteLineGreen("PlaybackActor PreStart");