private long IdSystemUsage()
        {
            IIdSystem idSystem = _db.IdSystem();
            long      usage    = 0;

            while (idSystem is BTreeIdSystem)
            {
                IIdSystem parentIdSystem = ((IIdSystem)FieldValue(idSystem, "_parentIdSystem"));
                usage += BTreeUsage(_db.SystemTransaction(), parentIdSystem, (BTree)FieldValue(idSystem
                                                                                               , "_bTree"), _slots);
                PersistentIntegerArray persistentState = (PersistentIntegerArray)FieldValue(idSystem
                                                                                            , "_persistentState");
                int persistentStateId = persistentState.GetID();
                Db4objects.Db4o.Internal.Slots.Slot persistentStateSlot = parentIdSystem.CommittedSlot
                                                                              (persistentStateId);
                _slots.Add(persistentStateSlot);
                usage   += persistentStateSlot.Length();
                idSystem = parentIdSystem;
            }
            if (idSystem is InMemoryIdSystem)
            {
                Db4objects.Db4o.Internal.Slots.Slot idSystemSlot = ((Db4objects.Db4o.Internal.Slots.Slot
                                                                     )FieldValue(idSystem, "_slot"));
                usage += idSystemSlot.Length();
                _slots.Add(idSystemSlot);
            }
            return(usage);
        }
Example #2
0
 private void InitializeExisting(int persistentArrayId)
 {
     _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem
                                                   , persistentArrayId);
     _persistentState.Read(Transaction());
     _bTree = new BTree(Transaction(), BTreeConfiguration(), BTreeId(), new BTreeIdSystem.IdSlotMappingHandler
                            ());
 }
Example #3
0
 private void InitializeNew()
 {
     CreateBTrees(0, 0);
     _slotsByAddress.Write(Transaction());
     _slotsByLength.Write(Transaction());
     int[] ids = new int[] { _slotsByAddress.GetID(), _slotsByLength.GetID() };
     _idArray = new PersistentIntegerArray(SlotChangeFactory.FreeSpace, _idSystem, ids
                                           );
     _idArray.Write(Transaction());
     _file.SystemData().BTreeFreespaceId(_idArray.GetID());
 }
Example #4
0
        private void InitializeNew()
        {
            _bTree = new BTree(Transaction(), BTreeConfiguration(), new BTreeIdSystem.IdSlotMappingHandler
                                   ());
            int idGeneratorValue = _container.Handlers.LowestValidId() - 1;

            _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem
                                                          , new int[] { _bTree.GetID(), idGeneratorValue, 0 });
            _persistentState.Write(Transaction());
            _parentIdSystem.ChildId(_persistentState.GetID());
        }
Example #5
0
        private void InitializeExisting(int id)
        {
            _idArray = new PersistentIntegerArray(SlotChangeFactory.FreeSpace, _idSystem, id);
            _idArray.Read(Transaction());
            int[] ids       = _idArray.Array();
            int   addressId = ids[0];
            int   lengthID  = ids[1];

            CreateBTrees(addressId, lengthID);
            _slotsByAddress.Read(Transaction());
            _slotsByLength.Read(Transaction());
            _delegate.Read(_file, _file.SystemData().InMemoryFreespaceSlot());
        }
Example #6
0
        /// <exception cref="System.Exception"></exception>
        public virtual void Test()
        {
            int[] original             = new int[] { 10, 99, 77 };
            PersistentIntegerArray arr = new PersistentIntegerArray(SlotChangeFactory.IdSystem
                                                                    , null, original);

            arr.Write(SystemTrans());
            int id = arr.GetID();

            Reopen();
            arr = new PersistentIntegerArray(SlotChangeFactory.IdSystem, null, id);
            arr.Read(SystemTrans());
            int[] copy = arr.Array();
            ArrayAssert.AreEqual(original, copy);
        }
Example #7
0
 private void InitializeNew()
 {
     _bTree = new BTree(Transaction(), BTreeConfiguration(), new IdSlotMappingHandler
         ());
     var idGeneratorValue = _container.Handlers.LowestValidId() - 1;
     _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem
         , new[] {_bTree.GetID(), idGeneratorValue, 0});
     _persistentState.Write(Transaction());
     _parentIdSystem.ChildId(_persistentState.GetID());
 }
Example #8
0
 private void InitializeExisting(int persistentArrayId)
 {
     _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem
         , persistentArrayId);
     _persistentState.Read(Transaction());
     _bTree = new BTree(Transaction(), BTreeConfiguration(), BTreeId(), new IdSlotMappingHandler
         ());
 }
Example #9
0
 private void InitializeNew()
 {
     CreateBTrees(0, 0);
     _slotsByAddress.Write(Transaction());
     _slotsByLength.Write(Transaction());
     int[] ids = {_slotsByAddress.GetID(), _slotsByLength.GetID()};
     _idArray = new PersistentIntegerArray(SlotChangeFactory.FreeSpace, _idSystem, ids
         );
     _idArray.Write(Transaction());
     _file.SystemData().BTreeFreespaceId(_idArray.GetID());
 }
Example #10
0
 private void InitializeExisting(int id)
 {
     _idArray = new PersistentIntegerArray(SlotChangeFactory.FreeSpace, _idSystem, id);
     _idArray.Read(Transaction());
     var ids = _idArray.Array();
     var addressId = ids[0];
     var lengthID = ids[1];
     CreateBTrees(addressId, lengthID);
     _slotsByAddress.Read(Transaction());
     _slotsByLength.Read(Transaction());
     _delegate.Read(_file, _file.SystemData().InMemoryFreespaceSlot());
 }