/// <summary> /// Десериализует XML файл в коллекцию ObservableCollection<OS>. Возвращает значение, указывающее на успешность выполнения. /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static bool OpenXml(string filePath) { try { // Передаем в конструктор тип класса. var opener = new XmlSerializer(typeof(ObservableCollection <OS>)); // Десериализация. using (var fs = new FileStream(filePath, FileMode.Open)) { ScanList.Clear(); ScanList = (ObservableCollection <OS>)opener.Deserialize(fs); ForWorks.viewSource.Source = ScanList; // Подписка на события изменения базы данных ObservableCollection. ScanList.CollectionChanged += MainWindow.SelfRef.ChangeCollection; MainWindow.SelfRef.SetFilters(); } // Установить открытый файл как текущий. ForWorks.currentWorkFile = filePath; // Установка переменной состояния изменений документа в ложь. ForWorks.checkEdit = false; // Установить счетчик строк в зависимости от наличия элементов в читаемом файле. RowNumCounter = ScanList.Count > 0 ? ScanList.Last().NumRow + 1 : 1; return(true); } catch { return(false); } }
/// <summary> /// Add <paramref name="ep"/> to the scan list. /// </summary> public void Add(IPEndPoint ep) { lock (ScanList) { ScanList.AddLast(ep); } SemaphoreScanList.Release(); }
private void delall() { DJScanCompletList.Clear(); ScanList.Clear(); pictureBoxTopDisplay.Image = null; if (delAllIcon != null) { delAllIcon.Invoke(); } }
public async void DisplayBaggageLocation() { try { using (_udialog.Loading("Tracking...")) { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters.Add("bagtag", _params.Bagtag); parameters.Add("pnr", _params.PNR); parameters.Add("lastname", _params.LastName.Trim(' ')); var restService = Mvx.Resolve <IRestService>(); restService.WebMethod = "TrackBagScanPoints"; restService.Parameters = parameters; string returnResponse = await restService.Consume(); TrackResponse trackResponse = JsonConvert.DeserializeObject <TrackResponse>(returnResponse); if (trackResponse.StatusCode == "0") { Application.Current.Properties["token"] = trackResponse.Token; if (trackResponse.ScanPoints != null) { var scanList = new ScanList(); foreach (var item in trackResponse.ScanPoints.ToList()) { scanList.Add(new ScanPoints() { Station = item.Station, Location = item.Location, ScanTime = item.ScanTime.ToString("HH:mm MMM dd, yyyy") }); } var list = new List <ScanList>() { scanList }; ScanPointList = list; } } else { ErrorMessage = trackResponse.Message; } Bagtag = _params.Bagtag; PNR = _params.PNR; LastName = _params.LastName; } } catch (Exception e) { Mvx.Resolve <IUserDialogs>().Toast(e.Message, null); } }
public static void TestCount() { for (var i = 0; i < 100; i++) { var x = MonteCarlo.Unordered().ToList(); var scan = new ScanList<int>(Function, x); Console.WriteLine(" {0}", x.ToCSV(100)); Console.WriteLine(" = {0}", scan); Console.WriteLine(); Assert.That(scan.Count, Is.EqualTo(x.Count)); } }
public static void TestIndexer() { for (var i = 0; i < 100; i++) { var x = MonteCarlo.Unordered().ToList(); var scan = new ScanList<int>(Function, x); Console.WriteLine(" {0}", x.ToCSV(100)); Console.WriteLine(" = {0}", scan); Console.WriteLine(); if (x.Count > 0) { var seed = x[0]; Assert.That(scan[0], Is.EqualTo(seed)); for (var j = 1; j < x.Count; j++) Assert.That(scan[j], Is.EqualTo(seed = Function(seed, x[j]))); } } }
/// <summary> /// Scanning loop. /// </summary> protected async void Loop() { while (!IsStopped) { try { await SemaphoreScanList.WaitAsync(TokenSource.Token).ConfigureAwait(false); IPEndPoint ep; lock (ScanList) { ep = ScanList.First.Value; ScanList.RemoveFirst(); } await SemaphoreParallelism.WaitAsync(TokenSource.Token).ConfigureAwait(false); Scan(ep); } catch { } } }
private void ip_change(object sender, KeyEventArgs e) { g_ScanList = null; }
private void btnStartStop_Click(object sender, EventArgs e) { if (btnStartStop.Text == "Start") { g_sw.Restart(); g_stopped = false; btnStartStop.Text = "Stop"; btnStartStop.ForeColor = Color.Red; cbShowOffline.Enabled = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start"; lvScans.Items.Clear(); g_ScanList = null; int from1 = 0, from2 = 0, from3 = 0, from4 = 0, to1 = 0, to2 = 0, to3 = 0, to4 = 0; if (!ValidateIPRange(ref txtFrom1, ref txtTo1, ref from1, ref to1) || !ValidateIPRange(ref txtFrom2, ref txtTo2, ref from2, ref to2) || !ValidateIPRange(ref txtFrom3, ref txtTo3, ref from3, ref to3) || !ValidateIPRange(ref txtFrom4, ref txtTo4, ref from4, ref to4)) { MessageBox.Show("Please check TO & FROM Addresses!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); btnStartStop.Text = "Start"; btnStartStop.ForeColor = Color.Green; cbShowOffline.Enabled = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start"; return; } tstStatus.Text = "Generating memory ScanList"; g_ScanList = new ScanList(); List <ScanListHost> scanlistHosts = new List <ScanListHost>(); IEnumerable <string> ipRanges = new RangeFinder().GetIPRange(IPAddress.Parse($"{from1}.{from2}.{from3}.{from4}"), IPAddress.Parse($"{to1}.{to2}.{to3}.{to4}")); foreach (var ip in ipRanges) { scanlistHosts.Add(new ScanListHost { IP = ip, ScanResult = string.Empty }); } g_ScanList.Host = scanlistHosts.ToArray(); List <ScanListHost> unscanned = g_ScanList.Host.Where(h => h.ScanResult == string.Empty).ToList(); if (g_remaining_hosts_count > 0) { tstStatus.Text = $"{g_remaining_hosts_count - unscanned.Count()} of {g_remaining_hosts_count} Hosts Scanned!"; } tstProgress.Value = 0; g_scannner_tasks = new List <Task>(); g_total = g_ScanList.Host.Count(); g_remaining_hosts_count = g_total; do { int removed = g_scannner_tasks.RemoveAll(t => t.Status == TaskStatus.RanToCompletion); Application.DoEvents(); Thread.Sleep(50); tstStatus.Text = $"{g_total - g_remaining_hosts_count} of {g_total} Hosts Scanned! Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s"; tstProgress.Value = (((g_total - g_remaining_hosts_count) * 100) / g_total); if (g_stopped) { return; } while (unscanned.Count > 0 && g_scannner_tasks.Count < numThreads.Value) { if (g_stopped) { return; } var tmp = DeepCopy(unscanned.Take((int)hostsPerThread.Value)).ToList(); Task t = Task.Run(() => ScanRange(tmp)); g_scannner_tasks.Add(t); unscanned = unscanned.Skip((int)hostsPerThread.Value).ToList(); } } while (g_scannner_tasks.Count > 0 || g_remaining_hosts_count > 0 || (unscanned.Count > 0 && !g_stopped)); if (g_stopped) { return; } tstStatus.Text = "Saving ScanList.xml"; SaveScanlist(); tstStatus.Text = $"ScanList.xml saved! Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s"; g_sw.Stop(); btnStartStop.Text = "Start"; btnStartStop.ForeColor = Color.Green; cbShowOffline.Enabled = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start"; } else { g_stopped = true; btnStartStop.Enabled = false; Stopwatch stopStopw = new Stopwatch(); stopStopw.Start(); while (g_scannner_tasks != null && g_scannner_tasks.Count > 0) { g_scannner_tasks.RemoveAll(t => t.Status == TaskStatus.RanToCompletion); Application.DoEvents(); Thread.Sleep(500); tstStatus.Text = $"{g_scannner_tasks.Count} Stopping.. {g_total - g_remaining_hosts_count} of {g_total} Hosts Scanned!"; tstProgress.Value = (((g_total - g_remaining_hosts_count) * 100) / g_total); if (stopStopw.Elapsed.TotalSeconds > 15) { foreach (var process in Process.GetProcessesByName("nmap")) { process.Kill(); } } } stopStopw.Stop(); tstStatus.Text = "Saving ScanList.xml"; SaveScanlist(); tstStatus.Text = "ScanList.xml saved!"; g_sw.Stop(); tstStatus.Text = $"Scan Stopped.. Time: {g_sw.Elapsed.Minutes}m{g_sw.Elapsed.Seconds}s ScanRate: {(int)((g_total - g_remaining_hosts_count) / g_sw.Elapsed.TotalSeconds)} hosts/s"; btnStartStop.Text = "Start"; btnStartStop.ForeColor = Color.Green; btnStartStop.Enabled = true; cbShowOffline.Enabled = groupBox1.Enabled = groupBox2.Enabled = groupBox3.Enabled = groupBox4.Enabled = groupBox5.Enabled = btnStartStop.Text == "Start"; } }