public long?TryAllocateFromFreeSpace(LowLevelTransaction tx, int num) { if (tx.RootObjects == null) { return(null); } if (_disableStatus.DisableCount > 0) { return(null); } if (_guard.IsProcessingFixedSizeTree) { return(null); } using (_guard.Enter(tx)) { var freeSpaceTree = GetFreeSpaceTree(tx); if (freeSpaceTree.NumberOfEntries == 0) { return(null); } using (var it = freeSpaceTree.Iterate()) { if (it.Seek(0) == false) { return(null); } if (num < NumberOfPagesInSection) { return(TryFindSmallValue(tx, freeSpaceTree, it, num)); } return(TryFindLargeValue(tx, freeSpaceTree, it, num)); } } }
public long?TryAllocateFromFreeSpace(Transaction tx, int num) { if (tx.State.FreeSpaceRoot == null) { return(null); // initial setup } if (tx.FreeSpaceRoot.State.EntriesCount == 0) { return(null); } if (_disableStatus.DisableCount > 0) { return(null); } if (_guard.IsEntered) { return(null); } using (_guard.Enter(tx)) { using (var it = tx.FreeSpaceRoot.Iterate()) { if (it.Seek(Slice.BeforeAllKeys) == false) { return(null); } if (num < NumberOfPagesInSection) { return(TryFindSmallValue(tx, it, num)); } return(TryFindLargeValue(tx, it, num)); } } }