protected override void ReadIndex(ObjectContainerBase stream, ClassMetadata clazz , ByteArrayBuffer reader) { int indexID = reader.ReadInt(); if (indexID == 0) { return; } clazz.Index().Read(stream, indexID); }
protected override void ReadIndex(ObjectContainerBase stream, ClassMetadata clazz , ByteArrayBuffer reader) { int indexID = reader.ReadInt(); if (!stream.MaintainsIndices() || !(stream is LocalObjectContainer)) { return; } if (Btree(clazz) != null) { return; } clazz.Index().Read(stream, ValidIndexId(indexID)); if (IsOldClassIndex(indexID)) { new ClassIndexesToBTrees_5_5().Convert((LocalObjectContainer)stream, indexID, Btree (clazz)); stream.SetDirtyInSystemTransaction(clazz); } }
protected virtual void WriteIndex(Transaction trans, ClassMetadata clazz, ByteArrayBuffer writer) { int indexID = clazz.Index().Write(trans); writer.WriteInt(IndexIDForWriting(indexID)); }
public virtual int MarshalledLength(ObjectContainerBase stream, ClassMetadata clazz ) { IntByRef len = new IntByRef(stream.StringIO().ShortLength(clazz.NameToWrite()) + Const4.ObjectLength + (Const4.IntLength * 2) + (Const4.IdLength)); len.value += clazz.Index().OwnLength(); clazz.TraverseDeclaredAspects(new _IProcedure4_108(this, len, stream)); return len.value; }
public virtual void TraverseAllIndexSlots(ClassMetadata classMetadata, IVisitor4 command) { IEnumerator slotIDIter = classMetadata.Index().AllSlotIDs(Sourcedb.Transaction(this )); while (slotIDIter.MoveNext()) { command.Visit(slotIDIter.Current); } }
public virtual void TraverseAll(ClassMetadata classMetadata, IVisitor4 command) { if (!classMetadata.HasClassIndex()) { return; } classMetadata.Index().TraverseAll(Sourcedb.Transaction(this), command); }
public override void LoadFromClassIndex(ClassMetadata clazz) { IClassIndexStrategy index = clazz.Index(); if (index is BTreeClassIndexStrategy) { BTree btree = ((BTreeClassIndexStrategy)index).Btree(); _ids = new IntArrayList(btree.Size(Transaction())); } index.TraverseAll(_transaction, new _IVisitor4_107(this)); }
public static BTree Btree(ClassMetadata clazz) { IClassIndexStrategy index = clazz.Index(); if (!(index is Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy)) { throw new InvalidOperationException(); } return ((Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy)index).Btree (); }
/// <exception cref="Db4objects.Db4o.CorruptionException"></exception> /// <exception cref="System.IO.IOException"></exception> private static void ProcessClassIndex(DefragmentServicesImpl context, ClassMetadata curClass, IPassCommand command) { if (curClass.HasClassIndex()) { BTreeClassIndexStrategy indexStrategy = (BTreeClassIndexStrategy)curClass.Index(); BTree btree = indexStrategy.Btree(); command.ProcessBTree(context, btree); } }
/// <exception cref="Db4objects.Db4o.CorruptionException"></exception> /// <exception cref="System.IO.IOException"></exception> private static void ProcessClassAndFieldIndices(DefragmentServicesImpl context, ClassMetadata curClass, IPassCommand command) { int sourceClassIndexID = 0; int targetClassIndexID = 0; if (curClass.HasClassIndex()) { sourceClassIndexID = curClass.Index().Id(); targetClassIndexID = context.MappedID(sourceClassIndexID, -1); } command.ProcessClass(context, curClass, curClass.GetID(), targetClassIndexID); }
public override long[] GetIDsForClass(Transaction trans, ClassMetadata clazz) { IntArrayList ids = new IntArrayList(); clazz.Index().TraverseAll(trans, new _IVisitor4_792(ids)); return ids.AsLong(); }
private void CollectClassSlots(ClassMetadata clazz) { if (!clazz.HasClassIndex()) { return; } BTreeClassIndexStrategy index = (BTreeClassIndexStrategy)clazz.Index(); index.TraverseAll(_db.SystemTransaction(), new _IVisitor4_182(this)); }
private FileUsageStatsCollector.InstanceUsage ClassSlotUsage(ClassMetadata clazz) { if (!clazz.HasClassIndex()) { return new FileUsageStatsCollector.InstanceUsage(0, 0); } IMiscCollector miscCollector = ((IMiscCollector)MiscCollectors[clazz.GetName()]); LongByRef slotUsage = new LongByRef(); LongByRef miscUsage = new LongByRef(); BTreeClassIndexStrategy index = (BTreeClassIndexStrategy)clazz.Index(); index.TraverseAll(_db.SystemTransaction(), new _IVisitor4_166(this, slotUsage, miscCollector , miscUsage)); return new FileUsageStatsCollector.InstanceUsage(slotUsage.value, miscUsage.value ); }