コード例 #1
0
        /// <exception cref="System.IO.IOException"></exception>
        public DefragmentServicesImpl(DefragmentConfig defragConfig, IDefragmentListener
                                      listener)
        {
            _listener = listener;
            Config4Impl originalConfig = (Config4Impl)defragConfig.Db4oConfig();
            IStorage    storage        = defragConfig.BackupStorage();

            if (defragConfig.ReadOnly())
            {
                storage = new NonFlushingStorage(storage);
            }
            Config4Impl 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;
        }
コード例 #2
0
        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();
        }
コード例 #3
0
 public virtual int BlockSize()
 {
     return(_sourceDb.BlockSize());
 }