Example #1
0
        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);
            }
        }
Example #2
0
        private void handleAppListMessage(AppListMessage msg, IPAddress sender)
        {
            SyncPeer found = _peers.Find((peer) => { return(peer.Address.Equals(sender)); });

            if (found == null)
            {
                Debug.WriteLine("Received AppList from unknown peer " + sender.ToString());
            }

            found.Apps = msg.availableApps;
            updateAvailableApps();
            Debug.WriteLine(String.Format("{0} has {1} available apps", found.Hostname, found.Apps.Count));
            SyncPeerUpdatedEventHandler handler = OnSyncPeerUpdated;

            if (handler != null)
            {
                handler(this, new SyncPeerUpdatedEventArgs(found, SyncPeerUpdatedAction.Updated));
            }
        }
Example #3
0
        private void removePeer(SyncPeer peer)
        {
            // remove the peers

            Debug.WriteLine("Removing " + peer.Hostname + " from peers list");
            if (_peers.Contains(peer))
            {
                _peers.Remove(peer);
            }

            // update list of available apps (i.e. remove any that are no longer available)
            updateAvailableApps();

            // notify listeners that the peers have been removed (need to do this after available apps has been updated)
            SyncPeerUpdatedEventHandler handler = OnSyncPeerUpdated;

            if (handler != null)
            {
                handler(this, new SyncPeerUpdatedEventArgs(peer, SyncPeerUpdatedAction.Removed));
            }
        }