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)); } } }
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(); } } }
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)); } }