public User GetDocumentLockOwner(Item item) { User lockOwner; if (LockedDocumentRegistry.TryGetValue(item.Id, out lockOwner)) { return(lockOwner); } return(null); }
public void RemoveAllLocksForUser(User user) { List <long> idList = LockedDocumentRegistry. Where(entry => entry.Value.Id == user.Id). Select(entry => entry.Key). ToList(); foreach (long itemId in idList) { User lockOwner; LockedDocumentRegistry.TryRemove(itemId, out lockOwner); } }
public bool TryLockDocument(Item item, User user) { lock (documentLocker) { User lockOwner = GetDocumentLockOwner(item); if (lockOwner != null) { if (user.Id != lockOwner.Id) { return(false); } } else { LockedDocumentRegistry.AddOrUpdate(item.Id, user, (itemId, oldUser) => user); } return(true); } }