Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ContextMenuOpening(object sender, System.ComponentModel.CancelEventArgs e)
        {
            PeerSettingsRecord Record = MainListView.SelectedItems.Count > 0 ? MainListView.SelectedItems[0].Tag as PeerSettingsRecord : null;

            availabilityToolStripMenuItem.Enabled = false;
            ContextMenuPeer = null;

            if (Record != null)
            {
                foreach (Peer Peer in Program.NetClient.AllPeers)
                {
                    if (Peer.Connection.IsReadyForData && Peer.Connection.Address != null && Peer.Connection.Address.Address.ToString() == Record.Address)
                    {
                        availabilityToolStripMenuItem.Enabled = true;
                        ContextMenuPeer = Peer;
                    }
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ListUpdateTimerTick(object sender, EventArgs e)
        {
            Peer[] AllPeers = Program.NetClient.AllPeers;

            List <string> ConnectedAddresses = new List <string>();

            foreach (Peer Peer in AllPeers)
            {
                if (Peer.Connection.IsReadyForData && Peer.Connection.Address != null)
                {
                    ConnectedAddresses.Add(Peer.Connection.Address.Address.ToString());
                }
            }

            foreach (PeerSettingsRecord Peer in Program.Settings.PeerRecords)
            {
                ListViewItem Item = null;
                foreach (ListViewItem SubItem in MainListView.Items)
                {
                    PeerSettingsRecord ItemPeer = SubItem.Tag as PeerSettingsRecord;
                    if (ItemPeer == Peer)
                    {
                        Item = SubItem;
                        break;
                    }
                }

                if (Item == null)
                {
                    Item                 = new ListViewItem(new string[14]);
                    Item.Tag             = Peer;
                    Item.ImageIndex      = 0;
                    Item.StateImageIndex = 0;
                    MainListView.Items.Add(Item);

                    MainListView.Sort();
                }

                Peer RealPeer = null;
                foreach (Peer CheckPeer in AllPeers)
                {
                    if (CheckPeer.Connection.IsReadyForData && CheckPeer.Connection.Address != null && CheckPeer.Connection.Address.Address.ToString() == Peer.Address)
                    {
                        RealPeer = CheckPeer;
                        break;
                    }
                }

                Item.Group = ConnectedAddresses.Contains(Peer.Address) ? MainListView.Groups[0] : MainListView.Groups[1];
                //Item.SubItems[0].Text = HostnameCache.GetHostname(Peer.Address);
                Item.SubItems[0].Text  = Peer.Username;
                Item.SubItems[1].Text  = Peer.MachineName;
                Item.SubItems[2].Text  = StringUtils.FormatAsTransferRate((long)Peer.AverageRateIn);
                Item.SubItems[3].Text  = StringUtils.FormatAsTransferRate((long)Peer.PeakRateIn);
                Item.SubItems[4].Text  = StringUtils.FormatAsTransferRate((long)Peer.AverageRateOut);
                Item.SubItems[5].Text  = StringUtils.FormatAsTransferRate((long)Peer.PeakRateOut);
                Item.SubItems[6].Text  = StringUtils.FormatAsSize(Peer.TotalIn);
                Item.SubItems[7].Text  = StringUtils.FormatAsSize(Peer.TotalOut);
                Item.SubItems[8].Text  = Peer.LastSeen.ToString("dd/MM/yyyy HH:mm");
                Item.SubItems[9].Text  = StringUtils.FormatAsSize((long)Peer.TargetInFlightData);
                Item.SubItems[10].Text = StringUtils.FormatAsSize((long)Peer.CurrentInFlightData);
                Item.SubItems[11].Text = string.Format("R:{0} S:{1} M:{2} Q:{3:0.0}",
                                                       (RealPeer != null ? RealPeer.ActiveBlockDownloads.Count : 0).ToString(),
                                                       (RealPeer != null ? RealPeer.BlockRequestQueue.Count : 0).ToString(),
                                                       (RealPeer != null ? RealPeer.MaxInFlightRequests : 0).ToString(),
                                                       (RealPeer != null ? RealPeer.QueueDepthMs : 0).ToString());
                Item.SubItems[12].Text = string.Format("{0} ms", Peer.Ping);
                Item.SubItems[13].Text = string.Format("{0} ms", Peer.BestPing);
            }
        }