/// <summary> /// Adiciona um observer para a entrada. /// </summary> /// <param name="observer"></param> /// <returns>Entrada gerada para o observer.</returns> public RecordObserverEntry AddObserver(IRecordObserver observer) { var entry = new RecordObserverEntry(observer); entry.Removed += ObserverEntryRemoved; lock (_observers) _observers.Add(entry); return(entry); }
/// <summary> /// Remove o observer associado. /// </summary> /// <param name="recordObserver">Instancia do observer que será removido.</param> /// <returns>True se for removido com sucesso.</returns> public bool RemoveObserver(IRecordObserver recordObserver) { if (recordObserver == null) { return(false); } RecordObserverEntry entry = null; lock (_recordObserverEntries) if (_recordObserverEntries.TryGetValue(recordObserver.Uid, out entry)) { return(false); } if (entry != null) { _recordObserverEntries.Remove(recordObserver.Uid); entry.Remove(); return(true); } return(false); }
/// <summary> /// Adiciona a chave de um registro. /// </summary> /// <param name="recordKey"></param> /// <param name="recordObserver">Observer do registro.</param> /// <returns></returns> public void AddRecordKey(RecordKey recordKey, IRecordObserver recordObserver) { lock (_recordObserverEntries) { if (_recordObserverEntries.ContainsKey(recordObserver.Uid)) { return; } RecordKeyEntry entry = null; var key = recordKey.Key; lock (_keys) if (!_keys.TryGetValue(key, out entry)) { entry = new RecordKeyEntry(key); entry.Removed += RecordKeyEntryRemoved; _keys.Add(key, entry); } var observerEntry = entry.AddObserver(recordObserver); _recordObserverEntries.Add(recordObserver.Uid, observerEntry); } }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="observer">Instancia do observer que a entra encapsula.</param> public RecordObserverEntry(IRecordObserver observer) { _reference = new WeakReference(observer); }
/// <summary> /// /// </summary> /// <param name="o"></param> public void addRecordObserver(IRecordObserver o) { cRecordObserverList.Add(o); }