public void Remove(IContactDetailsMonitor monitor) { if (!_monitors.Contains(monitor)) { return; } _monitors.Remove(monitor); }
public void Add(IContactDetailsMonitor monitor) { if (_monitors.Contains(monitor)) { return; } if (_latest != null) { monitor.Set(_latest); } _monitors.Add(monitor); }
public void Subscribe(Interlocutor interlocutor, IContactDetailsMonitor monitor) { var jid = XmppIdConverter.Jid(interlocutor); if (_providers.ContainsKey(jid)) { _providers[jid].Add(monitor); return; } var latest = _dataProvider.GetLatestInfo(jid); var provider = new ConactDetailsProvider(jid, latest); _providers[jid] = provider; provider.Add(monitor); }
public void Unsubscribe(Interlocutor interlocutor, IContactDetailsMonitor monitor) { var jid = XmppIdConverter.Jid(interlocutor); if (!_providers.ContainsKey(jid)) { return; } var provider = _providers[jid]; provider.Remove(monitor); if (provider.IsEmpty()) { _providers.Remove(jid); } }