SirenOfShame.Lib.Watcher.RulesEngine.Start C# (CSharp) Method

Start() public method

public Start ( bool initialStart ) : void
initialStart bool
return void
        public void Start(bool initialStart)
        {
            var ciEntryPointSettings = _settings.CiEntryPointSettings
                .Where(s => !string.IsNullOrEmpty(s.Url))
                .ToList();

            _watchers.Clear();
            foreach (var ciEntryPointSetting in ciEntryPointSettings)
            {
                WatcherBase watcher = ciEntryPointSetting.GetWatcher(_settings);
                _watchers.Add(watcher);
                watcher.StatusChecked += BuildWatcherStatusChecked;
                watcher.StoppedWatching += StoppedWatching;
                watcher.ServerUnavailable += BuildWatcherServerUnavailable;
                watcher.BuildDefinitionNotFound += BuildDefinitionNotFound;
                watcher.Settings = _settings;
                watcher.CiEntryPointSetting = ciEntryPointSetting;
                // todo: It looks like we are overwriting preceding watcher threads with subsequent ones which will cause problems when we try to Stop() them
                _watcherThread = new Thread(watcher.StartWatching) { IsBackground = true, Name = "CiWatcher" };
                _watcherThread.Start();
            }

            if (ciEntryPointSettings.Any())
            {
                if (initialStart)
                {
                    InvokeUpdateStatusBar("Attempting to connect to server");
                    SetStatusUnknown();
                }

                _timer.Start();
            }
            else
            {
                InvokeUpdateStatusBar("");
                InvokeRefreshStatus(Enumerable.Empty<BuildStatus>());
            }
        }