示例#1
0
 private void AddPeerToList(PeerEntry peerEntry)
 {
     var newPeer = new PeerVM(peerEntry);
     Manager.OnDataUpdate += newPeer.DataUpdate;
     PeerList.Add(newPeer);
 }
示例#2
0
 public PeerVM(PeerEntry peerEntry)
 {
     Peer = peerEntry;
 }
示例#3
0
 private void ProviderOnOnNewPeers(PeerEntry peerEntry)
 {
     OnNewPeer(peerEntry);
 }
示例#4
0
        // Обработка новых равноправных участников
        private void resolver_ResolveProgressChanged(object sender, ResolveProgressChangedEventArgs e)
        {
            PeerNameRecord peer = e.PeerNameRecord; // получает ссылку на запись с именем равноправного участника, которая была обнаружена

            foreach (IPEndPoint ep in peer.EndPointCollection)
            {
                if (ep.Address.AddressFamily == AddressFamily.InterNetwork)
                {
                    try
                    {
                        // создание канала с удаленным пиром
                        string endpointUrl = string.Format("net.tcp://{0}:{1}/P2PService", ep.Address, ep.Port);
                        var binding = new NetTcpBinding();
                        binding.Security.Mode = SecurityMode.None;
                        IP2PService serviceProxy = ChannelFactory<IP2PService>.CreateChannel(
                            binding, new EndpointAddress(endpointUrl));

                        // добавление нового пира в локальный список пиров
                        var newPeer = new PeerEntry
                        {
                            PeerName = peer.PeerName,
                            ServiceProxy = serviceProxy,
                            DisplayString = serviceProxy.GetName()
                        };
                        PeerList.Add(newPeer);
                        OnNewPeers(newPeer);
                        logger.Info("КТО: пользователь {0}. ЧТО: регистрация удаленного хоста {1}. РЕЗУЛЬТАТ: успешно",
                            LocalPeer.DisplayString, newPeer.DisplayString);
                    }
                    catch (EndpointNotFoundException enfe)
                    {
                        logger.Error(
                            "ОШИБКА. КТО: пользователь {0}. ЧТО: регистрация удаленного хоста c IP: {1}:{2}. РЕЗУЛЬТАТ: неудача",
                            LocalPeer.DisplayString, ep.Address, ep.Port);
                    }
                }
            }
        }