public virtual void TraverseAll(ClassMetadata classMetadata, IVisitor4 command) { if (!classMetadata.HasClassIndex()) { return; } classMetadata.Index().TraverseAll(Sourcedb.Transaction(this), command); }
public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl context, int classIndexID) { ReadName(sio, context.SourceBuffer()); ReadName(sio, context.TargetBuffer()); int metaClassID = 0; context.WriteInt(metaClassID); // ancestor ID context.CopyID(); context.WriteInt((classMetadata.HasClassIndex() ? IndexIDForWriting(classIndexID) : 0)); int aspectCount = context.ReadInt(); if (aspectCount > classMetadata.DeclaredAspectCount()) { throw new InvalidOperationException(); } IntByRef processedAspectCount = new IntByRef(0); classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount , aspectCount, classMetadata, sio, context)); }
/// <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 IQueryResult ClassOnlyQuery(QQueryBase query, ClassMetadata clazz ) { if (!clazz.HasClassIndex()) { return new IdListQueryResult(query.Transaction()); } AbstractQueryResult queryResult = NewQueryResult(query.Transaction()); queryResult.LoadFromClassIndex(clazz); return queryResult; }
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 ); }