public AcquiredLockServices(AcquiredDbParameters acquiredDbParameters, ILockService lockService, ITimeService timeService, ILeaseLockObject lockObject) { this.AcquiredDbParameters = acquiredDbParameters; this.LockService = lockService; this.TimeService = timeService; this.LockObject = lockObject; }
public AcquiredLockServices AcquireServicesForAnyUrlsOrDefault(IList <string> urls, string databaseName, TimeSpan leaseCheckTimeout, TimeSpan leaseLostTimeout, TimeSpan updateServerTimeInterval, CancellationToken token) { foreach (var url in urls) { IDbService dbService = null; try { dbService = this.dbServicesFactory.GetDbService(url, databaseName, leaseCheckTimeout, leaseLostTimeout, updateServerTimeInterval); //mongoDbService = new MongoDbService(url, databaseName, leaseCheckTimeout, leaseLostTimeout, updateServerTimeInterval); ILeaseLockObject leaseLock = null; try { leaseLock = dbService.CreateLockOrNull(token); if (leaseLock != null) { return(new AcquiredLockServices(new AcquiredDbParameters { ConnStringOrUrl = url, DatabaseName = databaseName, }, dbService, dbService, leaseLock)); } else { dbService.Dispose(); } } catch (OperationCanceledException) { // отмена return(null); } catch { leaseLock?.Dispose(); throw; } } catch (OperationCanceledException) { // отмена return(null); } catch { dbService?.Dispose(); continue; } } return(null); }