Exemple #1
0
 private void doCleanup()
 {
     lock (activeLocks)
     {
         List <String> dropKey = new List <String>();
         foreach (String key in activeLocks.Keys)
         {
             Lock l = activeLocks[key];
             if (l.isWriteLock)
             {
                 if (l.lockCreation.AddMinutes(W_TIMEOUT).CompareTo(new DateTime()) < 0)
                 {
                     if (DBTransferManager.getManager(null).abortDownload(key))
                     {
                         dropKey.Add(key);
                         //activeLocks.Remove(key);
                     }
                     else
                     {
                         l.lockCreation = l.lockCreation.AddMinutes(W_TIMEOUT);
                     }
                 }
             }
             else
             {
                 if (l.lockCreation.AddMinutes(R_TIMEOUT).CompareTo(new DateTime()) < 0)
                 {
                     dropKey.Add(key);
                     //((ILocks)(this)).releaseReadLock(key);
                     //activeLocks.Remove(key);
                 }
             }
         } //forEach
         ILocks ilock = (ILocks)this;
         foreach (string s in dropKey)
         {
             Lock l = activeLocks[s];
             if (l.isWriteLock)
             {
                 ilock.releaseWriteLock(s);
             }
             else
             {
                 ilock.releaseReadLock(s);
             }
         }
     } //lock
 }
Exemple #2
0
 void ILocks.releaseWriteLock(string filePath)
 {
     lock (activeLocks)
     {
         if (!activeLocks.ContainsKey(filePath))
         {
             Console.WriteLine("WARNING: attempt to release non-acquired WRITE lock");
             return;
         }
         distLockMgr.releaseWriteLock(filePath);
         if (!activeLocks.Remove(filePath))
         {
             Console.WriteLine("ERROR: releaseWriteLock did not remove from local db");
         }
     }
 }