Example #1
0
        // This callback will run after each ping iteration
        // This is technically our main update loop for the graph
        private void OnPingResultsUpdateCallback(PingResults r)
        {
            // Make sure we're not updating the display too frequently
            if (!_displayUpdateLimiter.RequestRun())
            {
                return;
            }

            int scalePrevious = _scale;

            // Reset position
            Console.CursorTop  = _plotStartY;
            Console.CursorLeft = _plotStartX;

            // Update labels
            UpdateLegend(r);

            // Get results from ping and add to graph
            AddResponseToGraph(r.CurrTime);

            // Draw graph columns
            DrawColumns();

            // Only draw the y axis labels if the scale has changed
            if (scalePrevious != _scale)
            {
                DrawYAxisLabels();
            }

            Console.CursorTop = EndCursorPosY;
        }
Example #2
0
 /// <summary>
 /// Starts the pinging cycle.
 /// </summary>
 private void startPinging()
 {
     chartPing.Series["Series1"].Points.Clear();
     buttonStartStop.Text  = "Stop";
     PingResults           = new PingResults();
     textBoxStartTime.Text = PingResults.StartTime.ToString();
     textBoxEndTime.Text   = "";
     if (backgroundWorker.IsBusy != true)
     {
         backgroundWorker.RunWorkerAsync();
     }
 }
Example #3
0
        public MainForm()
        {
            InitializeComponent();

            Config = new Config();
            backgroundWorker.WorkerReportsProgress      = true;
            backgroundWorker.WorkerSupportsCancellation = true;
            backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
            PingResults              = new PingResults();
            Pinging = false;

            initializeDialogs();
        }
        public async Task <IActionResult> CheckInternet()
        {
            var client        = _clientFactory.CreateClient();
            var googleRequest = await client.GetAsync("https://www.google.com/");

            var netflixRequest = await client.GetAsync("https://www.netflix.com/");

            var stofaRequest = await client.GetAsync("https://stofa.dk/");

            var results = new PingResults
            {
                GoogleHttp  = googleRequest.StatusCode,
                NetflixHttp = netflixRequest.StatusCode,
                StofaHttp   = stofaRequest.StatusCode
            };

            if (!googleRequest.IsSuccessStatusCode || !netflixRequest.IsSuccessStatusCode || !stofaRequest.IsSuccessStatusCode)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, results));
            }

            return(Ok(results));
        }
        public PingPanelViewModel()
        {
            StartPing = ReactiveCommand.CreateFromObservable(() =>
            {
                PingResults.Clear();
                return(PingHost(_hostName).TakeUntil(StopPing));
            });

            StopPing = ReactiveCommand.Create(() => Unit.Default);

            _mostRecentPingResult = Observable.Merge(
                _pingResults.ItemsAdded,
                StopPing.Select(_ => ""),
                this.WhenAnyValue(vm => vm.HostName).WhereNotNull().Select(_ => ""))
                                    .ToProperty(this, vm => vm.MostRecentPingResult);

            this.WhenActivated(disposables =>
            {
                StartPing
                .Do(pingMessage => PingResults.Insert(0, pingMessage))
                .Subscribe()
                .DisposeWith(disposables);

                this
                .WhenAnyValue(vm => vm.IsPinging)
                .Where(false)
                .Subscribe(_ => IsShowingPingResultDetails = false)
                .DisposeWith(disposables);

                Observable.Merge <(string Title, string Message)>(
                    StartPing.ThrownExceptions.Select(ex => (("Could not start pinging", ex.Message))),
                    StopPing.ThrownExceptions.Select(ex => (("Could not stop pinging", ex.Message))))
                .SelectMany(dialogContent => _messages.Handle(new MessageInfo(MessageType.Error, dialogContent.Message, dialogContent.Title)))
                .Subscribe()
                .DisposeWith(disposables);
            });
        }
Example #6
0
 private void PingFailed()
 {
     PingResults.Add(DateTime.Now, false);
 }
Example #7
0
 public List <DateTime> GetFailedPings()
 {
     return(PingResults.Where(r => r.Value == false).Select(r => r.Key).ToList());
 }
Example #8
0
        /// <summary>
        /// Update graph legend text labels
        /// </summary>
        /// <param name="results"></param>
        private void UpdateLegend(PingResults results)
        {
            // save cursor location
            int cursorPositionX = Console.CursorLeft;
            int cursorPositionY = Console.CursorTop;

            string blankLabel = new string(' ', 8);

            // Update sent label
            Console.SetCursorPosition(_sentLabelX, _sentLabelY);
            // Clear label first
            Console.Write(blankLabel);
            // Move cursor back
            Console.CursorLeft = Console.CursorLeft - 8;
            // Write label value
            Console.Write(results.Sent);

            // Update recieve label
            Console.SetCursorPosition(_recvLabelX, _recvLabelY);
            Console.Write(blankLabel);
            Console.CursorLeft = Console.CursorLeft - 8;
            Console.Write(results.Received);

            // Update average label
            Console.SetCursorPosition(_avgLabelX, _avgLabelY);
            Console.Write(new string(' ', 15));
            Console.CursorLeft = Console.CursorLeft - 15;
            double r = Math.Round(results.AvgTime, 1);

            if (_lastAvg < r)
            {
                Console.ForegroundColor = ConsoleColor.DarkRed;
                Console.Write("+");
                if (results.CurrTime - _lastRes > 20)
                {
                    Console.Write("+");
                }
            }
            else if (_lastAvg > r)
            {
                Console.ForegroundColor = ConsoleColor.DarkGreen;
                Console.Write("-");
                if (_lastRes - results.CurrTime > 20)
                {
                    Console.Write("-");
                }
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.DarkYellow;
                Console.Write("~");
            }
            _lastAvg = r;
            _lastRes = results.CurrTime;
            Console.ResetColor();
            Console.Write("{0:0.0}ms", results.AvgTime);

            // Update fail label
            Console.SetCursorPosition(_failLabelX, _failLabelY);
            Console.Write(blankLabel);
            Console.CursorLeft = Console.CursorLeft - 8;
            Console.Write(results.Lost);

            // Update peak label
            Console.SetCursorPosition(_peakLabelX, _peakLabelY);
            Console.Write(new string(' ', 15));
            Console.CursorLeft = Console.CursorLeft - 15;
            List <double> noTimeoutResponses = new List <double>();

            noTimeoutResponses.AddRange(_responseTimes);
            noTimeoutResponses.RemoveAll(x => x == 0d);
            Console.Write("{0}ms",
                          _responseTimes.Count > 0 && noTimeoutResponses.Count > 0 ? Math.Round(noTimeoutResponses.Max(), 1) : 0);

            // Update RTT label
            Console.SetCursorPosition(_rttLabelX, _rttLabelY);
            Console.Write(blankLabel);
            Console.CursorLeft = Console.CursorLeft - 8;
            Console.Write("{0:0.0}ms", results.CurrTime);

            // Update time label
            Console.SetCursorPosition(_timeLabelX, _timeLabelY);
            Console.Write(blankLabel + "        ");
            Console.CursorLeft = Console.CursorLeft - 16;
            Console.Write("{0:hh\\:mm\\:ss}", results.TotalRunTime);

            // Reset cursor to starting position
            Console.SetCursorPosition(cursorPositionX, cursorPositionY);
        }
Example #9
0
 public void OnFinish(PingResults results)
 {
     ConsoleDisplay.PingResults(Attributes, results);
 }