public static LockData Create(long lockID)
        {
            LockData rlock = new LockData { LockID = lockID};
#if DEBUG
            rlock.Timestamp = DateTimeOffset.Now;
#endif            
            return rlock;
        }
예제 #2
0
        public static LockData Create(long lockID)
        {
            LockData rlock = new LockData {
                LockID = lockID
            };

#if DEBUG
            rlock.Timestamp = DateTimeOffset.Now;
#endif
            return(rlock);
        }
예제 #3
0
        //
        // Returns 0 if lock was not acquired because somebody else already holds it
        // Else returns > 0
        // Does NOT BLOCK
        //
        public long AcquireLock(string itemID)
        {
            if (string.IsNullOrEmpty(itemID))
            {
                throw new ArgumentException("itemID");
            }

            lock (m_locks)
            {
                if (this.GetLock(itemID) != null)
                {
                    return(LockNotAcquired);
                }

                long lockID = this.NextLockID();
                Debug.Assert(RecordItemLockTable.IsValidLockID(lockID));

                m_locks[itemID] = LockData.Create(lockID);
                return(lockID);
            }
        }
 void ValidateLock(LockData? rLock, long lockID)
 {
     if (rLock == null)
     {
         throw new StoreException(StoreErrorNumber.ItemNotLocked);
     }
     if (!rLock.Value.IsLock(lockID))
     {
         throw new StoreException(StoreErrorNumber.ItemLockMismatch);
     }
 }