/// <summary> /// Remove o registro do observer. /// </summary> /// <param name="typeName"></param> /// <param name="observer"></param> public void Unregister(Colosoft.Reflection.TypeName typeName, IQueryResultChangedObserver observer) { if (IsEnabled) { var typeNameEntry = GetTypeNameEntry(typeName); typeNameEntry.RemoveObserver(observer); } }
/// <summary> /// Registra o observer para o resultado da consulta. Toda vez /// que ocorrer alguma alteração que implique sobre os dados /// do resultado o observer será notificado. /// </summary> /// <param name="typeName">Nome do tipo no qual o resultado se basea.</param> /// <param name="observer">Instancia do observer.</param> public void Register(Colosoft.Reflection.TypeName typeName, IQueryResultChangedObserver observer) { if (IsEnabled && IsValidType(typeName)) { var typeNameEntry = GetTypeNameEntry(typeName); typeNameEntry.AddObserver(observer); } }
/// <summary> /// Adiciona o observer para a entrada do tipo. /// </summary> /// <param name="observer"></param> public void AddObserver(IQueryResultChangedObserver observer) { lock (_queryResultObserverEntries) { if (_queryResultObserverEntries.ContainsKey(observer.Uid)) { return; } var entry = new QueryResultChangeObserverEntry(observer); _queryResultObserverEntries.Add(observer.Uid, entry); } }
/// <summary> /// Remove o observer associado. /// </summary> /// <param name="queryResultObserver">Instancia do observer que será removido.</param> /// <returns>True se for removido com sucesso.</returns> public bool RemoveObserver(IQueryResultChangedObserver queryResultObserver) { lock (_queryResultObserverEntries) return(_queryResultObserverEntries.Remove(queryResultObserver.Uid)); }
/// <summary> /// Construtor padrão. /// </summary> /// <param name="observer">Instancia do observer a entrada.</param> public QueryResultChangeObserverEntry(IQueryResultChangedObserver observer) { _reference = new WeakReference(observer); _referenceUid = observer.Uid; }