public MinilockRedisProvider(MinilockRedisProviderConfigurator configurator, ILoggerFactory?loggerFactory = null) { if (configurator == null) { throw new ArgumentNullException(nameof(configurator)); } _configuration = configurator.Build(); _redLockFactory = InitializeRedLockFactory(_configuration, loggerFactory); }
private static RedLockFactory InitializeRedLockFactory(MinilockRedisConfiguration configuration, ILoggerFactory?loggerFactory) { var endpoints = configuration .RedisInstances .Select(redisInstance => new RedLockEndPoint(new DnsEndPoint(redisInstance.Address, redisInstance.Port)) { Password = redisInstance.AuthKey, RedisDatabase = 0, RedisKeyFormat = "minilock:{0}", }) .ToList(); var redLockFactory = RedLockFactory.Create(endpoints, loggerFactory); return(redLockFactory); }
internal MinilockRedisConfiguration Build() { if (!HasRedisInstance) { throw new ArgumentException("At least one redis instance configuration required"); } var result = new MinilockRedisConfiguration { RedisInstances = RedisInstances, WaitTime = WaitTime, RetryTime = RetryTime, CancellationToken = CancellationToken, LockDuration = LockDuration }; return(result); }