public void Run()
        {
            while (!_stopping)
            {
                if (_siteRepository.GetProcessQueueSize() > 0)
                {
                    int sitesToAdd = Engine.GetRemainingSiteCapacity();

                    while (sitesToAdd > 0)
                    {
                        var domain = _siteRepository.GetNextSiteForProcessing();

                        if (!String.IsNullOrEmpty(domain))
                        {
                            if (Engine.ProcessSite(domain))
                            {
                                sitesToAdd--;
                            }
                        }
                        else
                        {
                            break;
                        }
                    }
                }

                Thread.Sleep(1000);
            }

            _stopped = true;
        }