public FileUsageStatsCollector(IObjectContainer db, bool collectSlots) { MiscCollectors = new Hashtable(); RegisterBigSetCollector(); _db = (LocalObjectContainer)db; byte blockSize = _db.BlockSize(); _blockConverter = blockSize > 1 ? (IBlockConverter) new BlockSizeBlockConverter(blockSize ) : (IBlockConverter) new DisabledBlockConverter(); _slots = collectSlots ? (ISlotMap) new SlotMapImpl(_db.FileLength()) : (ISlotMap) new NullSlotMap(); }
public virtual FileUsageStats CollectStats() { _stats = new FileUsageStats(_db.FileLength(), FileHeaderUsage(), IdSystemUsage(), Freespace(), ClassMetadataUsage(), FreespaceUsage(), UuidUsage(), _slots, CommitTimestampUsage ()); Sharpen.Util.ISet classRoots = ClassNode.BuildHierarchy(_db.ClassCollection()); for (IEnumerator classRootIter = classRoots.GetEnumerator(); classRootIter.MoveNext ();) { ClassNode classRoot = ((ClassNode)classRootIter.Current); CollectClassSlots(classRoot.ClassMetadata()); CollectClassStats(_stats, classRoot); } return(_stats); }
private bool IsBogusSlot(int address, int length) { return(address < 0 || (long)address + length > _db.FileLength()); }