/// <summary> /// Creates a new instance of the DistributedLock class. /// </summary> /// <param name="store">The object store where the object exists.</param> /// <param name="staleLockMultiplier">A multiplier used to determine if a previously locked object is stale. Setting this value too short will result in one lock overwriting another.</param> public DistributedLock(ISharpLockDataStore <TLockableObject, TId> store, int staleLockMultiplier = 10) { _store = store ?? throw new ArgumentNullException(nameof(store)); _sharpLockLogger = _store.GetLogger(); LockTime = _store.GetLockTime(); _staleLockMultiplier = staleLockMultiplier; }
public async Task Setup() { var logConfig = new LoggerConfiguration() .WriteTo.LiterateConsole() .MinimumLevel.Verbose(); Log.Logger = logConfig.CreateLogger(); _sharpLockLogger = new LoggingShim(Log.Logger); var client = new MongoClient(); var db = client.GetDatabase("Test"); _col = db.GetCollection <LockBase>($"lockables.{GetType()}"); await _col.DeleteManyAsync(Builders <LockBase> .Filter.Empty); }
public SharpLockMongoDataStore(IMongoCollection <TLockableObject> col, ISharpLockLogger sharpLockLogger, TimeSpan lockTime) { _baseDataStore = new SharpLockMongoDataStore <TLockableObject, TLockableObject>(col, sharpLockLogger, lockTime); }
public SharpLockMongoDataStore(IMongoCollection <TBaseObject> col, ISharpLockLogger sharpLockLogger, TimeSpan lockTime) { _sharpLockLogger = sharpLockLogger ?? throw new ArgumentNullException(nameof(sharpLockLogger)); _col = col ?? throw new ArgumentNullException(nameof(col)); _lockTime = lockTime == default(TimeSpan) ? throw new ArgumentNullException(nameof(lockTime)) : lockTime; }