private void ProcessingItems()
        {
            //Received word from the WorkerTracker that we need to process items
            Receive<ProcessItems>(process =>
            {
                Stats = Stats.WithItemsDiscovered(process.Items.Count);
                JobWorker.Tell(Stats.DeepClone(), Self);

                foreach (var item in process.Items)
                {
                    //hand the work off to the weightedshare workers
                    ItemWorkerRouter.Tell(new ItemWorker.ProcessItemResult(item.Copy()), Self);
                }
                
            });

            Receive<WorkerTracker.AllItemsCompleted>(ic =>
            {
                _logger.Info("{0} Items processed.", ic.Items.Count);
                
                StopJob();
            });

            Receive<WorkerTracker.CompletedItem>(completed =>
            {
                Stats = Stats.WithItemCompleted();
                WorkerTracker.Tell(completed, Self);
                JobWorker.Tell(Stats.DeepClone(), Self);
            });

            ReceiveAny(task =>
            {
                _logger.Error(" [x] Oh Snap! WorkerCoordinator.ProcessingWeightedShare.ReceiveAny: \r\n{0}", task);
            });
        }
 private void ReadyToStart()
 {
     Receive<GetJobData>(ic =>
     {
         Stats = new JobStats(Job);
         JobWorker.Tell(Stats.DeepClone(), Self);
         JobWorker.Tell(JobStatus.GetJobData, Self);
         Become(GetItemsToProcess);
         GetItemDataRef.Tell(new GetJobData(Job.JobInfo), Self);
     });
     ReceiveAny(task =>
     {
         _logger.Error(" [x] Oh Snap! WorkerCoordinator.ReadyToStart.ReceiveAny: \r\n{0}", task);
     });
 }