Exemplo n.º 1
0
 public async void CheckSitesAsync(ISiteDatabaseProvider sites, CancellationToken token)
 {
     if (!token.IsCancellationRequested)
     {
         await Task.Run(() => CheckSites(sites, token));
     }
 }
Exemplo n.º 2
0
        public void CheckSites(ISiteDatabaseProvider sites, CancellationToken token)
        {
            List <SiteResponse> responses = new List <SiteResponse>();
            DateTime            currentDateTime;
            DateTime            previousDateTime = DateTime.Now;

            while (!token.IsCancellationRequested)
            {
                currentDateTime = DateTime.Now;
                TimeSpan passedTime         = (currentDateTime - previousDateTime);
                uint     passedMilliseconds = (uint)passedTime.TotalMilliseconds;
                foreach (Site site in sites)
                {
                    if (site.NeedToBeChecked(passedMilliseconds))
                    {
                        SiteResponse siteResponse = new SiteResponse(site);
                        if (responses.IndexOf(siteResponse) > -1)
                        {
                            //т.к. сравнение происходит только по сайту, здесь удаляется прошлый ответ от этого сайта и записывается новый
                            responses.Remove(siteResponse);
                        }
                        responses.Add(siteResponse);
                    }
                }
                _scanResultFileProvider.WriteScanResults(responses);
                Thread.Sleep(500);
            }
        }
Exemplo n.º 3
0
 public void PrintSites(ISiteDatabaseProvider sites)
 {
     PrintString("Список сайтов: ", true);
     foreach (Site site in sites)
     {
         string output = String.Format("- {0}", site.Address);
         PrintString(output, true);
     }
 }
Exemplo n.º 4
0
        public void ReadCommand(ISiteDatabaseProvider sites, CancellationTokenSource cts, ref bool endWork, ref bool asyncCheckRestart)
        {
            Site         site;
            SiteResponse response;
            string       command = ReadLine();

            switch (command.ToLower())
            {
            case "добавить":
                site = GetSiteWithFrequencyFromUser();
                if (site != null)
                {
                    try
                    {
                        sites.AddSite(site);
                    }
                    catch (SiteCheckingFrequencyException e)
                    {
                        PrintString($"Ошибка добавления сайта: {e.Message}", true);
                    }
                    catch (Exception e)
                    {
                        PrintString($"Ошибка добавления сайта: {e.Message}", true);
                    }
                }
                break;

            case "удалить":
                site = GetSiteFromUser();
                sites.RemoveSite(site);
                break;

            case "сохранить":
                try
                {
                    sites.CommitChanges();
                }
                catch (DatabaseFileNotFoundException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (DatabaseException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (DatabaseNullArgumentException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (Exception e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                finally
                {
                    cts.Cancel();
                }
                break;

            case "сброс":
                try
                {
                    sites.ReloadSites();
                }
                catch (DatabaseFileNotFoundException e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                catch (DatabaseException e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                catch (DatabaseNullArgumentException e)
                {
                    PrintString($"Ошибка сохранения данных: {e.Message}", true);
                }
                catch (Exception e)
                {
                    PrintString($"Ошибка загрузки данных: {e.Message}", true);
                }
                break;

            case "печать":
                PrintSites(sites);
                break;

            case "проверка":
                site     = GetSiteFromUser();
                response = new SiteResponse(site);
                PrintString($"{site.Address}: {response.GetStatusCode()} - {response.GetStatusCodeText()}", true);
                break;

            case "выключение":
                cts.Cancel();
                endWork = true;
                break;

            case "справка":
                PrintCommandList();
                break;

            default:
                PrintString("Неизвестная команда. Проверьте правильность ввода или введите \"Справка\" для просмотра списка команд", true);
                break;
            }
        }