예제 #1
0
            /// <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));
            }
예제 #2
0
 /// <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);
     }
 }
예제 #3
0
 /// <summary>
 /// Construtor padrão.
 /// </summary>
 /// <param name="keyEntry"></param>
 /// <param name="typeNameEntry"></param>
 public ChangeRecordObserverNotifier(RecordKeyEntry keyEntry, TypeNameEntry typeNameEntry)
 {
     _keyEntry      = keyEntry;
     _typeNameEntry = typeNameEntry;
 }