public object Run() { QueryingReadContext context = null; if (Handlers4.HandleAsObject(arrayElementHandler)) { // TODO: Code is similar to FieldMetadata.collectIDs. Try to refactor to one place. int collectionID = buffer.ReadInt(); ByteArrayBuffer arrayElementBuffer = this._enclosing.Container().ReadBufferById(this ._enclosing.Transaction(), collectionID); ObjectHeader objectHeader = ObjectHeader.ScrollBufferToContent(this._enclosing.Container (), arrayElementBuffer); context = new QueryingReadContext(this._enclosing.Transaction(), candidates, this ._enclosing._handlerVersion, arrayElementBuffer, collectionID); objectHeader.ClassMetadata().CollectIDs(context); } else { context = new QueryingReadContext(this._enclosing.Transaction(), candidates, this ._enclosing._handlerVersion, buffer, 0); ((ICascadingTypeHandler)arrayElementHandler).CollectIDs(context); } Tree.Traverse(context.Ids(), new _IVisitor4_336(candidates)); IEnumerator i = context.ObjectsWithoutId(); while (i.MoveNext()) { object obj = i.Current; candidates.Add(new Db4objects.Db4o.Internal.Query.Processor.QCandidate(candidates , obj, 0)); } return(null); }
public override Db4objects.Db4o.Internal.ClassMetadata ClassMetadata() { if (_classMetadata != null) { return(_classMetadata); } Read(); if (_bytes == null) { return(null); } Seek(0); ObjectContainerBase stream = Container(); ObjectHeader objectHeader = new ObjectHeader(stream, _bytes); _classMetadata = objectHeader.ClassMetadata(); if (_classMetadata != null) { if (stream._handlers.IclassCompare.IsAssignableFrom(_classMetadata.ClassReflector ())) { ReadThis(false); } } return(_classMetadata); }
public static ObjectHeader Defrag(DefragmentContextImpl context) { var source = context.SourceBuffer(); var target = context.TargetBuffer(); var header = new ObjectHeader (context.Services().SystemTrans().Container(), null, source); var newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID()); var slotFormat = header.SlotFormat(); slotFormat.WriteObjectClassID(target, newID); slotFormat.SkipMarshallerInfo(target); slotFormat.ReadHeaderAttributes(target); return header; }
public override ITypeHandler4 ReadCandidateHandler(QueryingReadContext context) { int id = 0; int offset = context.Offset(); try { id = context.ReadInt(); } catch (Exception) { } context.Seek(offset); if (id != 0) { StatefulBuffer reader = context.Container().ReadStatefulBufferById(context.Transaction (), id); if (reader != null) { ObjectHeader oh = new ObjectHeader(context.Container(), reader); try { if (oh.ClassMetadata() != null) { context.Buffer(reader); return(oh.ClassMetadata().SeekCandidateHandler(context)); } } catch (Exception e) { } } } // TODO: Check Exception Types // Errors typically occur, if classes don't match return(null); }
public void Visit(object treeInt) { int id = ((TreeInt)treeInt)._key; StatefulBuffer reader = stream.ReadStatefulBufferById(this._enclosing._enclosing. _trans, id); if (reader != null) { ObjectHeader oh = new ObjectHeader(stream, reader); CollectIdContext context = new CollectIdContext(this._enclosing._enclosing._trans , oh, reader); oh.ClassMetadata().CollectIDs(context, fieldName); Tree.Traverse(context.Ids(), new _IVisitor4_394(idsNew)); } }
public static ObjectHeader Defrag(DefragmentContextImpl context) { var source = context.SourceBuffer(); var target = context.TargetBuffer(); var header = new ObjectHeader (context.Services().SystemTrans().Container(), null, source); var newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID()); var slotFormat = header.SlotFormat(); slotFormat.WriteObjectClassID(target, newID); slotFormat.SkipMarshallerInfo(target); slotFormat.ReadHeaderAttributes(target); return(header); }
public static void CollectIdsInternal(CollectIdContext context, ITypeHandler4 handler , int linkLength, bool doWithSlotIndirection) { if (!(IsCascading(handler))) { var buffer = context.Buffer(); buffer.Seek(buffer.Offset() + linkLength); return; } if (handler is StandardReferenceTypeHandler) { context.AddId(); return; } var container = (LocalObjectContainer)context.Container(); var slotFormat = context.SlotFormat(); if (HandleAsObject(handler)) { // TODO: Code is similar to QCandidate.readArrayCandidates. Try to refactor to one place. var collectionID = context.ReadInt(); var collectionBuffer = container.ReadBufferById(context.Transaction() , collectionID); var objectHeader = new ObjectHeader(container, collectionBuffer); var subContext = new QueryingReadContext(context.Transaction(), context .HandlerVersion(), collectionBuffer, collectionID, context.Collector()); objectHeader.ClassMetadata().CollectIDs(subContext); return; } var queryingReadContext = new QueryingReadContext(context.Transaction (), context.HandlerVersion(), context.Buffer(), 0, context.Collector()); IClosure4 collectIDsFromQueryingContext = new _IClosure4_263(handler, queryingReadContext ); if (doWithSlotIndirection) { slotFormat.DoWithSlotIndirection(queryingReadContext, handler, collectIDsFromQueryingContext ); } else { collectIDsFromQueryingContext.Run(); } }
internal virtual ClassMetadata ReadClassMetadata() { if (_classMetadata == null) { Read(); if (_bytes != null) { Seek(0); ObjectContainerBase stream = Container(); var objectHeader = new ObjectHeader(stream, _bytes); _classMetadata = objectHeader.ClassMetadata(); if (_classMetadata != null) { if (stream._handlers.IclassCompare.IsAssignableFrom(_classMetadata.ClassReflector ())) { ReadThis(false); } } } } return(_classMetadata); }
private object ReadIndexEntryForRebuild(StatefulBuffer writer, ObjectHeader oh) { ClassMetadata classMetadata = oh.ClassMetadata(); if (classMetadata == null) { return(DefaultValueForFieldType()); } ObjectIdContextImpl context = new ObjectIdContextImpl(writer.Transaction(), writer , oh, writer.GetID()); if (!classMetadata.SeekToField(context, this)) { return(DefaultValueForFieldType()); } try { return(ReadIndexEntry(context)); } catch (CorruptionException exc) { throw new FieldIndexException(exc, this); } }
// do nothing public Db4objects.Db4o.Internal.ClassMetadata ClassMetadata() { return(_objectHeader.ClassMetadata()); }
// do nothing public ClassMetadata ClassMetadata() { return(_objectHeader.ClassMetadata()); }