public void RemoveDependency(object key, CacheSyncDependency dependency) { if (_context.IsDbSyncCoordinator) { if (dependency == null) { return; } try { SyncItem item = new SyncItem(key, dependency.Key, dependency.CacheId); lock (_dependenciesStatus.SyncRoot) { if (_dependenciesKeyMap.Contains(item)) { ClusteredArrayList dependentKeys = _dependenciesKeyMap[item] as ClusteredArrayList; if (dependentKeys != null) { dependentKeys.Remove(key); if (dependentKeys.Count > 0) { return; } } _dependenciesKeyMap.Remove(item); } if (_dependenciesStatus.Contains(item)) { _dependenciesStatus.Remove(item); } else { return; } } ISyncCache syncCache = _synCaches[item.CacheId] as ISyncCache; ISyncCacheEventsListener listener = _listeners[item.CacheId] as ISyncCacheEventsListener; if (syncCache != null && listener != null) { syncCache.UnRegisterSyncKeyNotifications((string)item.Key, listener); } } catch (Exception e) { NCacheLog.Error("CacheSyncManager:", e.ToString()); } } else { lock (_inactiveDependencies.SyncRoot) { _inactiveDependencies.Remove(key); } } }
/// <summary> /// Remove a dependencia. /// </summary> /// <param name="key">Chave.</param> /// <param name="dependency">Instancia da dependencia.</param> public void RemoveDependency(object key, CacheSyncDependency dependency) { if (_context.IsDbSyncCoordinator) { if (dependency != null) { try { SyncItem item = new SyncItem(key, dependency.Key, dependency.CacheId); lock (_dependenciesStatus.SyncRoot) { if (_dependenciesKeyMap.Contains(item)) { ArrayList list = _dependenciesKeyMap[item] as ArrayList; if (list != null) { list.Remove(key); if (list.Count > 0) { return; } } _dependenciesKeyMap.Remove(item); } if (_dependenciesStatus.Contains(item)) { _dependenciesStatus.Remove(item); } else { return; } } ISyncCache cache = _synCaches[item.CacheId] as ISyncCache; ISyncCacheEventsListener eventListener = _listeners[item.CacheId] as ISyncCacheEventsListener; if ((cache != null) && (eventListener != null)) { cache.UnRegisterSyncKeyNotifications((string)item.Key, eventListener); } } catch (Exception exception) { this.Logger.Error(("CacheSyncManager:" + exception.ToString()).GetFormatter()); } } } else { _inactiveDependencies.Remove(key); } }
private void RemoveSyncItem(SyncItem item, bool unregisterCallbacks) { if (_cache != null) { try { ClusteredArrayList dependentKeys = null; lock (_dependenciesStatus.SyncRoot) { _dependenciesStatus.Remove(item); if (_dependenciesKeyMap.Contains(item)) { dependentKeys = _dependenciesKeyMap[item] as ClusteredArrayList; } _dependenciesKeyMap.Remove(item); } ISyncCache syncCache = _synCaches[item.CacheId] as ISyncCache; ISyncCacheEventsListener listener = _listeners[item.CacheId] as ISyncCacheEventsListener; if (syncCache != null && listener != null && unregisterCallbacks) { syncCache.UnRegisterSyncKeyNotifications((string)item.Key, listener); } if (dependentKeys != null) { foreach (object key in dependentKeys) { OperationContext context = new OperationContext(OperationContextFieldName.OperationType, OperationContextOperationType.CacheOperation); _cache.Remove(key, context); } } } catch (Exception e) { NCacheLog.Error("CacheSyncManager:", e.ToString()); } } }
/// <summary> /// Remove um item de sincronização. /// </summary> /// <param name="item">Instancia do item.</param> /// <param name="unregisterCallbacks">True para remover o registro dos callbacks.</param> private void RemoveSyncItem(SyncItem item, bool unregisterCallbacks) { if (_cache != null) { try { ArrayList list = null; lock (_dependenciesStatus.SyncRoot) { _dependenciesStatus.Remove(item); if (_dependenciesKeyMap.Contains(item)) { list = _dependenciesKeyMap[item] as ArrayList; } _dependenciesKeyMap.Remove(item); } ISyncCache cache = _synCaches[item.CacheId] as ISyncCache; ISyncCacheEventsListener eventListener = _listeners[item.CacheId] as ISyncCacheEventsListener; if (((cache != null) && (eventListener != null)) && unregisterCallbacks) { cache.UnRegisterSyncKeyNotifications((string)item.Key, eventListener); } if (list != null) { foreach (object obj2 in list) { _cache.Remove(obj2, new OperationContext(OperationContextFieldName.OperationType, OperationContextOperationType.CacheOperation)); } } } catch (Exception exception) { this.Logger.Error(("CacheSyncManager:" + exception.ToString()).GetFormatter()); } } }