private LockGuard(string key, string operationId, ExclusiveBlockConfiguration config) { _key = key; _operationId = operationId; _refreshPeriod = new TimeSpan(config.LockTimeout.Ticks / 2 - 1); _dataProvider = config.DataProvider; _finisher = new CancellationTokenSource(); _cancellationToken = config.CancellationToken; Trace.WriteLine($"SnTrace: System: ExclusiveLock guard created for {key} #{_operationId}. RefreshPeriod: {_refreshPeriod}"); }
/// <summary> /// Sets the current <see cref="IExclusiveLockDataProviderExtension"/> instance that will be responsible /// for managing exclusive locks. /// </summary> /// <param name="builder">The IRepositoryBuilder instance.</param> /// <param name="provider">The extension instance to set.</param> /// <returns>The updated IRepositoryBuilder.</returns> public static IRepositoryBuilder UseExclusiveLockDataProviderExtension(this IRepositoryBuilder builder, IExclusiveLockDataProviderExtension provider) { Providers.Instance.DataProvider.SetExtension(typeof(IExclusiveLockDataProviderExtension), provider); return(builder); }
/// <summary> /// Sets the current <see cref="IExclusiveLockDataProviderExtension"/> instance that will be responsible /// for managing exclusive locks. /// </summary> /// <param name="builder">The IRepositoryBuilder instance.</param> /// <param name="provider">The extension instance to set.</param> /// <returns>The updated IRepositoryBuilder.</returns> public static IRepositoryBuilder UseExclusiveLockDataProviderExtension(this IRepositoryBuilder builder, IExclusiveLockDataProviderExtension provider) { DataStore.SetDataProviderExtension(typeof(IExclusiveLockDataProviderExtension), provider); return(builder); }