public void AcquireTableReadLock(ITable table, Transaction transaction)
        {
            ILock tableLock = this.tableLocks[table];
            var   lockInfo  = this.lockInventory.GetLockInformation(tableLock, transaction);

            if (!lockInfo.IsReadLockHeld)
            {
                if (!lockInfo.IsWriteLockHeld)
                {
                    // TODO: OnWaiting
                    tableLock.EnterRead();
                    // TODO: OnAcquired
                }

                lockInfo.IsReadLockHeld = true;
            }
        }