Beispiel #1
0
        public Guid AcquireLock(bool writeAccess, params string[] collections)
        {
            Guid sessionId = Guid.NewGuid();

            LockPolicy.SmartRetry(() => TryAcquireLock(sessionId, writeAccess, collections));

            return(sessionId);
        }
Beispiel #2
0
            public void AcquireLock()
            {
                CheckStatus(Status.Initialized);

                CurrentStatus = Status.AcquiringLocks;

                LockPolicy.SmartRetry(TryAcquireLock);

                CurrentStatus = Status.LocksAcquired;
            }
 public static ILock CreateLock(LockPolicy policy, bool allowRecursion)
 {
     switch (policy)
     {
         case LockPolicy.MostlyRead:
             return new ReadWriteLock(allowRecursion);
         case LockPolicy.MostlyWrite:
         case LockPolicy.SimilarReadAndWrite:
             return new MonitorLock();
         default:
             return new MonitorLock();
     }
 }
Beispiel #4
0
        /// <summary>
        /// Acquire lock on a single node cluster
        /// </summary>
        /// <param name="writeAccess"></param>
        /// <param name="collections"></param>
        /// <returns></returns>
        public Guid AcquireLock(bool writeAccess, params string[] collections)
        {
            if (collections.Length == 0)
            {
                throw new ArgumentException("Value cannot be an empty collection.", nameof(collections));
            }

            var sessionId = Guid.NewGuid();

            LockPolicy.SmartRetry(() => TryAcquireLock(sessionId, writeAccess, collections));

            return(sessionId);
        }
Beispiel #5
0
        public static ILock CreateLock(LockPolicy policy, bool allowRecursion)
        {
            switch (policy)
            {
            case LockPolicy.MostlyRead:
                return(new ReadWriteLock(allowRecursion));

            case LockPolicy.MostlyWrite:
            case LockPolicy.SimilarReadAndWrite:
                return(new MonitorLock());

            default:
                return(new MonitorLock());
            }
        }
Beispiel #6
0
 public static ILock CreateLock(LockPolicy policy)
 {
     return(CreateLock(policy, false));
 }
Beispiel #7
0
 private void AcquireWriteLock(Guid sessionId, params string[] collectionNames)
 {
     Retries += LockPolicy.SmartRetry(() =>
                                      TryAcquireWriteLock(sessionId, DefaultWaitForLockInMilliseconds, collectionNames));
 }
 public static ILock CreateLock(LockPolicy policy)
 {
     return CreateLock(policy, false);
 }