Ejemplo n.º 1
0
 void OnLockExpired(object sender, LockExpiryEventArgs e)
 {
     lock (locked)
     {
         DataUpdateLock updateLock = updateLocks[e.UpdateLockId];
         updateLocks.Remove(e.UpdateLockId);
         locked.Remove(updateLock.Data);
     }
 }
Ejemplo n.º 2
0
 public void UpdateData(XmlDocument updatedData, DataUpdateLock dataUpdateLock)
 {
     lock (updateLocks)
     {
         if (!updateLocks.ContainsKey(dataUpdateLock.Id))
         {
             throw new InvalidUpdateRequest("Update Denied: Data has not been locked, or lock has expired");
         }
         catalogSource.UpdateData(updatedData, dataUpdateLock.Data);
     }
 }
Ejemplo n.º 3
0
 public DataUpdateLock GetUpdateLock(IDataIdentifier id)
 {
     lock (locked)
     {
         if (locked.Contains(id))
         {
             return(null);
         }
         DataUpdateLock updateLock = new DataUpdateLock(Guid.NewGuid(), id, DateTime.Now.AddMinutes(1));
         updateLocks.Add(updateLock.Id, updateLock);
         locked.Add(id);
         updateLock.OnLockExpired += new LockExpiryEvent(OnLockExpired);
         return(updateLock);
     }
 }