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); } }
public int Compare(SiteResponse r1, SiteResponse r2) { if (r1 == null && r2 == null) { return(0); } if (r1 != null && r2 == null) { return(1); } if (r1 == null && r2 != null) { return(-1); } //на этом этапе оба объекта гарантированно != null //сравниваются только опрашиваемые сайты Site s1 = r1.GetRespondingSite(); Site s2 = r2.GetRespondingSite(); if (s1 == null) { if (s2 == null) { return(0); } else { return(s2.Compare(s1, s2)); } } else { return(s1.Compare(s1, s2)); } }
public bool Equals(SiteResponse r) { if (r == null) { return(false); } return(this.GetRespondingSite().Equals(r.GetRespondingSite())); }
public int CompareTo(SiteResponse r) { if (r == null) { return(-1); } else { Site s2 = r.GetRespondingSite(); Site s1 = this.GetRespondingSite(); return(s1.CompareTo(s2)); } }
public override bool Equals(Object obj) { if (obj == null) { return(false); } SiteResponse r = obj as SiteResponse; if (r as SiteResponse == null) { return(false); } return(this.GetRespondingSite().Equals(r.GetRespondingSite())); }
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; } }