/// <summary> /// Initializes a new instance of the <see cref="LockManagerBase"/> class. /// </summary> /// <param name="cleanupTask">The clean-up task for expired locks</param> /// <param name="systemClock">The system clock interface</param> /// <param name="logger">The logger</param> /// <param name="options">The options of the lock manager</param> protected LockManagerBase(ILockCleanupTask cleanupTask, ISystemClock systemClock, ILogger logger, ILockManagerOptions options = null) { _rounding = options?.Rounding ?? new DefaultLockTimeRounding(DefaultLockTimeRoundingMode.OneSecond); _cleanupTask = cleanupTask; _systemClock = systemClock; _logger = logger; }
public TextFileLockManager(ILockCleanupTask cleanupTask, ISystemClock systemClock, ILogger <TextFileLockManager> logger, IOptions <TextFileLockManagerOptions> options) : base(cleanupTask, systemClock, logger, options.Value) { _logger = logger; _lockFileName = options.Value.LockFileName; AddLocksToCleanupTask(); }
/// <summary> /// Initializes a new instance of the <see cref="SQLiteLockManager"/> class. /// </summary> /// <param name="sqliteOptions">The SQLite options</param> /// <param name="cleanupTask">The clean-up task for expired locks</param> /// <param name="systemClock">The system clock interface</param> /// <param name="logger">The logger</param> public SQLiteLockManager( [NotNull] IOptions <SQLiteLockManagerOptions> sqliteOptions, [NotNull] ILockCleanupTask cleanupTask, [NotNull] ISystemClock systemClock, [NotNull] ILogger <SQLiteLockManager> logger) : this(sqliteOptions.Value, cleanupTask, systemClock, logger) { }
/// <summary> /// Initializes a new instance of the <see cref="SQLiteLockManager"/> class. /// </summary> /// <param name="sqliteOptions">The SQLite options</param> /// <param name="cleanupTask">The clean-up task for expired locks</param> /// <param name="systemClock">The system clock interface</param> /// <param name="logger">The logger</param> public SQLiteLockManager( [NotNull] SQLiteLockManagerOptions sqliteOptions, [NotNull] ILockCleanupTask cleanupTask, [NotNull] ISystemClock systemClock, [NotNull] ILogger <SQLiteLockManager> logger) : base(cleanupTask, systemClock, logger, sqliteOptions) { if (string.IsNullOrEmpty(sqliteOptions.DatabaseFileName)) { throw new ArgumentException("A database file name must be set in the SQLiteLockManager options."); } EnsureDatabaseExists(sqliteOptions.DatabaseFileName); _connection = new sqlitenet.SQLiteConnection(sqliteOptions.DatabaseFileName); }
/// <summary> /// Initializes a new instance of the <see cref="InMemoryLockManager"/> class. /// </summary> /// <param name="options">The options of the lock manager</param> /// <param name="cleanupTask">The clean-up task for expired locks</param> /// <param name="systemClock">The system clock interface</param> /// <param name="logger">The logger</param> public InMemoryLockManager(IOptions <InMemoryLockManagerOptions> options, ILockCleanupTask cleanupTask, ISystemClock systemClock, ILogger <InMemoryLockManager> logger) : base(cleanupTask, systemClock, logger, options.Value) { }