Пример #1
0
        void IRepository.RemovePeers(RemotePeer[] peers)
        {
            foreach (var peer in peers)
            {
                bool wasThere = _peers.Remove(peer.CallbackUri);

                if (wasThere)
                    _counters.Discovery_State_AliveRemotePeers--;
            }
        }
Пример #2
0
        void IManager.HandleHelloMessage(string callbackUri, string role, DateTime lastSeen)
        {
            if (_self.repo.HasPeer(callbackUri))
            {
                _self.repo.KeepAlive(callbackUri, lastSeen);

                _counters.Discovery_Event_HelloMsgIsKeepAlive++;
                return;
            }

            var peer = new RemotePeer
                           {
                               CallbackUri = callbackUri,
                               Role = role,
                               LastSeen = lastSeen
                           };

            _self.repo.AddPeer(peer);

            var subscribers = _self.repo.GetSubscribers();
            int count = subscribers.Length;

            foreach (var subscriber in subscribers)
            {
                fire_notification(subscriber, callbackUri, role, true);
            }

            _counters.Discovery_Event_HelloNotificationsProduced += count;
            trace("{0} hello notifications are generated", count);
        }
Пример #3
0
 void IRepository.AddPeer(RemotePeer peer)
 {
     _peers[peer.CallbackUri] = peer;
     _counters.Discovery_State_AliveRemotePeers++;
 }