/// <summary> /// Recupera o notificador associado com a chave do registor. /// </summary> /// <param name="recordKey"></param> /// <returns></returns> public IRecordObserverNotifier GetNotifier(RecordKey recordKey) { RecordKeyEntry entry = null; lock (_keys) _keys.TryGetValue(recordKey.Key, out entry); return(new ChangeRecordObserverNotifier(entry, this)); }
/// <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="keyEntry"></param> /// <param name="typeNameEntry"></param> public ChangeRecordObserverNotifier(RecordKeyEntry keyEntry, TypeNameEntry typeNameEntry) { _keyEntry = keyEntry; _typeNameEntry = typeNameEntry; }