Esempio n. 1
0
 internal bool UnSubscribeFromSiloStatusEvents(ISiloStatusListener observer)
 {
     lock (statusListeners)
     {
         return(statusListeners.Contains(observer) && statusListeners.Remove(observer));
     }
 }
Esempio n. 2
0
        internal bool SubscribeToSiloStatusEvents(ISiloStatusListener observer)
        {
            lock (statusListeners)
            {
                if (statusListeners.Contains(observer))
                {
                    return(false);
                }

                statusListeners.Add(observer);
                return(true);
            }
        }
        public bool Unsubscribe(ISiloStatusListener listener)
        {
            lock (this.listenersLock)
            {
                for (var i = 0; i < this.listeners.Count; i++)
                {
                    if (!this.listeners[i].TryGetTarget(out var existing))
                    {
                        continue;
                    }

                    if (ReferenceEquals(existing, listener))
                    {
                        this.listeners = this.listeners.RemoveAt(i);
                        return(true);
                    }
                }

                return(false);
            }
        }
        public bool Subscribe(ISiloStatusListener listener)
        {
            lock (this.listenersLock)
            {
                foreach (var reference in this.listeners)
                {
                    if (!reference.TryGetTarget(out var existing))
                    {
                        continue;
                    }

                    if (ReferenceEquals(existing, listener))
                    {
                        return(false);
                    }
                }

                this.listeners = this.listeners.Add(new WeakReference <ISiloStatusListener>(listener));
                return(true);
            }
        }
Esempio n. 5
0
 /// <summary>
 /// UnSubscribe from status events about all silos.
 /// </summary>
 /// <returns>bool value indicating that subscription succeeded or not.</returns>
 public bool UnSubscribeFromSiloStatusEvents(ISiloStatusListener observer)
 {
     this.subscribers.TryRemove(observer, out observer);
     return(true);
 }
Esempio n. 6
0
 /// <summary>
 /// Subscribe to status events about all silos.
 /// </summary>
 /// <param name="observer">An observer async interface to receive silo status notifications.</param>
 /// <returns>bool value indicating that subscription succeeded or not.</returns>
 public bool SubscribeToSiloStatusEvents(ISiloStatusListener observer)
 {
     this.subscribers[observer] = observer;
     return(true);
 }
Esempio n. 7
0
 public bool UnSubscribeFromSiloStatusEvents(ISiloStatusListener listener) => this.listenerManager.Unsubscribe(listener);
Esempio n. 8
0
 public bool SubscribeToSiloStatusEvents(ISiloStatusListener listener) => this.listenerManager.Subscribe(listener);
Esempio n. 9
0
 internal bool SubscribeToSiloStatusEvents(ISiloStatusListener observer)
 {
     lock (statusListeners)
     {
         if (statusListeners.Contains(observer))
             return false;
         
         statusListeners.Add(observer);
         return true;
     }
 }
Esempio n. 10
0
 internal bool UnSubscribeFromSiloStatusEvents(ISiloStatusListener observer)
 {
     lock (statusListeners)
     {
         return statusListeners.Contains(observer) && statusListeners.Remove(observer);
     }
 }