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); }
private void InitializeExisting(int persistentArrayId) { _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem , persistentArrayId); _persistentState.Read(Transaction()); _bTree = new BTree(Transaction(), BTreeConfiguration(), BTreeId(), new BTreeIdSystem.IdSlotMappingHandler ()); }
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()); }
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()); }
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()); }
/// <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); }
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()); }
private void InitializeExisting(int persistentArrayId) { _persistentState = new PersistentIntegerArray(SlotChangeFactory.IdSystem, _transactionalIdSystem , persistentArrayId); _persistentState.Read(Transaction()); _bTree = new BTree(Transaction(), BTreeConfiguration(), BTreeId(), new IdSlotMappingHandler ()); }
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()); }
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()); }