/// <exception cref="System.IO.IOException"></exception> public DefragmentServicesImpl(DefragmentConfig defragConfig, IDefragmentListener listener) { _listener = listener; var originalConfig = (Config4Impl) defragConfig.Db4oConfig(); var storage = defragConfig.BackupStorage(); if (defragConfig.ReadOnly()) { storage = new NonFlushingStorage(storage); } var sourceConfig = PrepareConfig(originalConfig, storage, defragConfig.ReadOnly ()); _sourceDb = (LocalObjectContainer) Db4oFactory.OpenFile(sourceConfig, defragConfig .TempPath()).Ext(); _sourceDb.ShowInternalClasses(true); defragConfig.Db4oConfig().BlockSize(_sourceDb.BlockSize()); if (!originalConfig.GenerateCommitTimestamps().DefiniteNo()) { defragConfig.Db4oConfig().GenerateCommitTimestamps(_sourceDb.Config().GenerateCommitTimestamps ().DefiniteYes()); } _targetDb = FreshTargetFile(defragConfig); _mapping = defragConfig.Mapping(); _mapping.Open(); _defragConfig = defragConfig; }
public virtual long FreespaceSize() { if (!HasFreespaceManager()) { return(0); } long blockSize = _file.BlockSize(); long blockedSize = FreespaceManager().TotalFreespace(); return(blockSize * blockedSize); }
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(); }