Ejemplo n.º 1
0
        public void Unlock(long nodeLocation, bool writable)
        {
            NodeLocks nl = null;

            if (_nodeLocks.TryGetValue(nodeLocation, out nl))
            {
                nl.RemoveLock(writable);
            }
        }
Ejemplo n.º 2
0
        public void NodeIsMoving(long oldNodeLocation, long newNodeLocation)
        {
            NodeLocks nl = _nodeLocks[oldNodeLocation];

            if (nl != null)
            {
                _nodeLocks[newNodeLocation] = nl;
                _nodeLocks[oldNodeLocation] = null;
            }
        }
Ejemplo n.º 3
0
        /// <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);
        }