private void AddPeerToList(PeerEntry peerEntry) { var newPeer = new PeerVM(peerEntry); Manager.OnDataUpdate += newPeer.DataUpdate; PeerList.Add(newPeer); }
public PeerVM(PeerEntry peerEntry) { Peer = peerEntry; }
private void ProviderOnOnNewPeers(PeerEntry peerEntry) { OnNewPeer(peerEntry); }
// Обработка новых равноправных участников 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); } } } }