Example #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);
        }
 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())
 {
 }
Example #4
0
 public QP8CacheItemWatcher(InvalidationMode mode, IContentInvalidator invalidator, ILogger logger, string connectionName = "qp_database")
     : base(mode, invalidator, logger, connectionName)
 {
 }
Example #5
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)
 {
 }