Пример #1
0
        private void AcquireLock()
        {
            ulong cas;
            var   lockPOCO = Get(LockKey, out cas);

            if (lockPOCO != null)
            {
                CheckLockPocoIsMyLock(lockPOCO);
            }

            var storeKeyLock = new StoreKeyLock()
            {
                Expiry = Expires, WorkerId = WorkerId, IsConfirmed = true
            };

            Set(LockKey, storeKeyLock, cas);
        }
Пример #2
0
 private void CheckLockPocoIsMyLock(StoreKeyLock lockPOCO, bool isMyLock = false)
 {
     if (lockPOCO != null)
     {
         if (lockPOCO.Expiry >= DateTime.UtcNow)
         {
             if (WorkerId != lockPOCO.WorkerId)
             {
                 throw new LockException("This worker " + WorkerId + " has already locked key " + LockKey);
             }
             else if (!isMyLock)
             {
                 throw new LockException("Cannot acquire lock for " + LockKey + " as it has already been locked by " + WorkerId);
             }
         }
         //otherwise the lock has expired so continue
     }
     else
     {
         throw new ArgumentNullException("Lock POCO is null");
     }
 }
Пример #3
0
 private void Set(string key, StoreKeyLock value, ulong cas)
 {
     Provider.Set(key, Serializer.Serialize(value), cas);
 }
Пример #4
0
 private void Set(string key, StoreKeyLock value)
 {
     Provider.Set(key, Serializer.Serialize(value));
 }