Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
 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())
 {
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 public QP8CacheItemWatcher(InvalidationMode mode, IContentInvalidator invalidator, ILogger logger, string connectionName = "qp_database")
     : base(mode, invalidator, logger, connectionName)
 {
 }
Exemplo n.º 7
0
 public virtual void InvalidateByTag(InvalidationMode mode, string tag)
 {
     Throws.IfArgumentNullOrEmpty(tag, _ => tag);
     _cache.Remove(tag);
 }
Exemplo n.º 8
0
 /// <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)
 {
 }
Exemplo n.º 9
0
        public virtual void InvalidateTables(InvalidationMode mode, params string[] tableNames)
        {
            var keys = ResolveTableNames(tableNames);

            InvalidateKeys(mode, keys);
        }
Exemplo n.º 10
0
        public virtual void InvalidateIds(InvalidationMode mode, params int[] contentIds)
        {
            var names = ResolveKeys(contentIds);

            InvalidateKeys(mode, names);
        }
Exemplo n.º 11
0
 /// <summary>
 /// Сообщает, что данные этого тега (контента) обновились
 /// </summary>
 /// <param name="tag">тег</param>
 public void InvalidateByTag(InvalidationMode mode, string tag)
 {
 }
Exemplo n.º 12
0
 public void InvalidateByTags(InvalidationMode mode, params string[] tags)
 {
 }