/// <summary> /// /// </summary> /// <param name="mode">режим работы</param> /// <param name="pollPeriod">интервал опроса бд</param> /// <param name="invalidator">объект, инвалидирующий кеш</param> /// <param name="connectionName">имя строки подключения</param> /// <param name="dueTime">отложенный запуск (ms)</param> /// <param name="onInvalidate">вызывается при удалении старых записей</param> public QPCacheItemWatcher(InvalidationMode mode, TimeSpan pollPeriod, IContentInvalidator invalidator, string connectionName = "qp_database", int dueTime = 0, bool useTimer = true, Func <Tuple <int[], string[]>, bool> onInvalidate = null) { Throws.IfArgumentNull(_ => connectionName); Throws.IfArgumentNull(_ => invalidator); _dueTime = TimeSpan.FromMilliseconds(dueTime); _pollPeriod = pollPeriod; if (useTimer) { _timer = new Timer(OnTick, null, 0, Timeout.Infinite); } var connectionString = ConfigurationManager.ConnectionStrings[connectionName]; try { _connectionString = connectionString.ConnectionString; } catch (Exception ex) { throw new InvalidOperationException("access to _connectionString.ConnectionString caused an exception", ex); } Throws.IfArgumentNullOrEmpty(_connectionString, nameof(_connectionString)); _trackers = new ConcurrentBag <CacheItemTracker>(); _mode = mode; _invalidator = invalidator; _onInvalidate = onInvalidate; Throws.IfArgumentNull(_ => _connectionString); }
public virtual void InvalidateByTags(InvalidationMode mode, params string[] tags) { foreach (var tag in tags) { _cache.Remove(tag); } }
public CustomerCoreCacheItemWatcher(InvalidationMode mode, IContentInvalidator invalidator, IConnectionProvider connectionProvider, ILogger logger, DatabaseType databaseType = DatabaseType.SqlServer) : this(mode, Timeout.InfiniteTimeSpan, invalidator, connectionProvider, logger, 0, false, databaseType) { }
public CustomerCoreCacheItemWatcher(InvalidationMode mode, TimeSpan pollPeriod, IContentInvalidator invalidator, IConnectionProvider connectionProvider, ILogger logger, int dueTime = 0, bool useTimer = true, DatabaseType databaseType = DatabaseType.SqlServer) : base(mode, pollPeriod, invalidator, connectionProvider?.GetConnection(), logger, dueTime, useTimer, null, databaseType.ToString()) { }
public virtual void InvalidateKeys(InvalidationMode mode, params string[] keys) { _logger.Debug(() => "Invalidating a set of keys " + string.Join(", ", keys)); if (keys == null || keys.Length == 0) { return; } _cacheProvider.InvalidateByTags(mode, keys); }
public QP8CacheItemWatcher(InvalidationMode mode, IContentInvalidator invalidator, ILogger logger, string connectionName = "qp_database") : base(mode, invalidator, logger, connectionName) { }
public virtual void InvalidateByTag(InvalidationMode mode, string tag) { Throws.IfArgumentNullOrEmpty(tag, _ => tag); _cache.Remove(tag); }
/// <summary> /// /// </summary> /// <param name="mode">режим работы</param> /// <param name="invalidator">объект, инвалидирующий кеш</param> /// <param name="connectionName">имя строки подключения</param> public QPCacheItemWatcher(InvalidationMode mode, IContentInvalidator invalidator, string connectionName = "qp_database") : this(mode, Timeout.InfiniteTimeSpan, invalidator, connectionName, 0, false) { }
public virtual void InvalidateTables(InvalidationMode mode, params string[] tableNames) { var keys = ResolveTableNames(tableNames); InvalidateKeys(mode, keys); }
public virtual void InvalidateIds(InvalidationMode mode, params int[] contentIds) { var names = ResolveKeys(contentIds); InvalidateKeys(mode, names); }
/// <summary> /// Сообщает, что данные этого тега (контента) обновились /// </summary> /// <param name="tag">тег</param> public void InvalidateByTag(InvalidationMode mode, string tag) { }
public void InvalidateByTags(InvalidationMode mode, params string[] tags) { }