private void handleHelloMessage(HelloMessage msg, IPAddress sender) { // see if the peers list contains a SyncPeer with the same hostname SyncPeer found = _peers.Find((peer) => { return(peer.Hostname == msg.hostname); }); if (found != null) { // we know about this peer, update its last seen time found.LastResponded = DateTime.Now; } else { // we don't know about this peer, add it SyncPeer newPeer = new SyncPeer(); newPeer.Port = msg.listenPort; newPeer.Hostname = msg.hostname; newPeer.Address = sender; newPeer.LastResponded = DateTime.Now; _peers.Add(newPeer); Debug.WriteLine("Added new peer " + msg.hostname); SyncPeerUpdatedEventHandler handler = OnSyncPeerUpdated; if (handler != null) { handler(this, new SyncPeerUpdatedEventArgs(found, SyncPeerUpdatedAction.Added)); } // send our hello message quickly (so the peer doesn't have to wait ~5 seconds to get our next hello) _udpAgent.HurrySendHello(); // request the peer's applist Debug.WriteLine("Sending RequestAppList to " + sender.ToString()); RequestAppListMessage sendMsg = new RequestAppListMessage(); _tcpAgent.SendMessage(sendMsg, sender); } }
private void handleRequestAppListMessage(RequestAppListMessage msg, IPAddress sender) { Debug.WriteLine("Sending AppList to " + sender.ToString()); AppListMessage sendMsg = new AppListMessage(); sendMsg.availableApps = Library.Apps.Values.ToList(); _tcpAgent.SendMessage(sendMsg, sender); }