public void Unlock(long nodeLocation, bool writable) { NodeLocks nl = null; if (_nodeLocks.TryGetValue(nodeLocation, out nl)) { nl.RemoveLock(writable); } }
public void NodeIsMoving(long oldNodeLocation, long newNodeLocation) { NodeLocks nl = _nodeLocks[oldNodeLocation]; if (nl != null) { _nodeLocks[newNodeLocation] = nl; _nodeLocks[oldNodeLocation] = null; } }
/// <summary> /// Will block the calling thread until a lock (readable or writable) can be obtained for the node at the given location. /// </summary> /// <param name="nodeLocation"></param> /// <param name="writable"></param> public void Lock(long nodeLocation, bool writable) { NodeLocks nl = null; if (!_nodeLocks.TryGetValue(nodeLocation, out nl)) { nl = new NodeLocks(); _nodeLocks.Add(nodeLocation, nl); } nl.AddLock(writable); }