Exemplo n.º 1
0
 public void AddObserver(IChatCallbackObserver observer)
 {
     if (!observers.Contains(observer))
     {
         observers.Add(observer);
         if (observer.RequestedRefreshInterval != null && observer.RequestedRefreshInterval < refreshInterval)
         {
             refreshInterval = (uint)observer.RequestedRefreshInterval;
             GLib.Source.Remove(timerId);
             timerId = GLib.Timeout.Add(refreshInterval, new GLib.TimeoutHandler(refresh));
         }
     }
 }
Exemplo n.º 2
0
 public void NotifyChatUpdate(int chatId, IChatCallbackObserver observer)
 {
     for (int i = 0; i < observers.Count; i++)
     {
         if (observers[i] == null)
         {
             observers.RemoveAt(i);
             i--;
             continue;
         }
         if (observers[i] != observer && (observers[i].ChatId == null || observers[i].ChatId == chatId))
         {
             observers[i].HandleChatUpdate();
         }
     }
 }
Exemplo n.º 3
0
        public void RemoveObserver(IChatCallbackObserver observer)
        {
            if (observers.Contains(observer))
            {
                observers.Remove(observer);
            }

            uint interval = REFRESH_INTERVAL;

            foreach (var obs in observers)
            {
                if (obs.RequestedRefreshInterval != null && obs.RequestedRefreshInterval < interval)
                {
                    interval = (uint)obs.RequestedRefreshInterval;
                }
            }
            if (refreshInterval != interval)
            {
                refreshInterval = interval;
                GLib.Source.Remove(timerId);
                timerId = GLib.Timeout.Add(refreshInterval, new GLib.TimeoutHandler(refresh));
            }
        }