public DeleteContextImpl(Db4objects.Db4o.Internal.StatefulBuffer buffer, ObjectHeader objectHeader, IReflectClass fieldClass, Config4Field fieldConfig) : base(buffer .Transaction(), buffer, objectHeader) { _fieldClass = fieldClass; _fieldConfig = fieldConfig; }
public DefragmentContextImpl(Db4objects.Db4o.Internal.DefragmentContextImpl parentContext , ObjectHeader header) { _source = parentContext._source; _target = parentContext._target; _services = parentContext._services; _objectHeader = header; }
public DefragmentContextImpl(ByteArrayBuffer source, IDefragmentServices services , ObjectHeader header) { _source = source; _services = services; _target = new ByteArrayBuffer(Length()); _source.CopyTo(_target, 0, 0, Length()); _objectHeader = header; }
public static CollectIdContext ForID(Transaction transaction, IdObjectCollector collector, int id) { var reader = transaction.Container().ReadStatefulBufferById(transaction , id); if (reader == null) { return null; } var oh = new ObjectHeader(transaction.Container(), reader); return new CollectIdContext(transaction, collector , oh, reader); }
public static Db4objects.Db4o.Internal.Marshall.CollectIdContext ForID(Transaction transaction, IdObjectCollector collector, int id) { StatefulBuffer reader = transaction.Container().ReadStatefulBufferById(transaction , id); if (reader == null) { return null; } ObjectHeader oh = new ObjectHeader(transaction.Container(), reader); return new Db4objects.Db4o.Internal.Marshall.CollectIdContext(transaction, collector , oh, reader); }
public static Db4objects.Db4o.Internal.Marshall.ObjectHeader Defrag(DefragmentContextImpl context) { ByteArrayBuffer source = context.SourceBuffer(); ByteArrayBuffer target = context.TargetBuffer(); Db4objects.Db4o.Internal.Marshall.ObjectHeader header = new Db4objects.Db4o.Internal.Marshall.ObjectHeader (context.Services().SystemTrans().Container(), null, source); int newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID()); Db4objects.Db4o.Internal.Marshall.SlotFormat slotFormat = header.SlotFormat(); slotFormat.WriteObjectClassID(target, newID); slotFormat.SkipMarshallerInfo(target); slotFormat.ReadHeaderAttributes(target); return header; }
public static Db4objects.Db4o.Internal.Marshall.ObjectHeader Defrag(DefragmentContextImpl context) { ByteArrayBuffer source = context.SourceBuffer(); ByteArrayBuffer target = context.TargetBuffer(); Db4objects.Db4o.Internal.Marshall.ObjectHeader header = new Db4objects.Db4o.Internal.Marshall.ObjectHeader (context.Services().SystemTrans().Container(), null, source); int newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID()); Db4objects.Db4o.Internal.Marshall.SlotFormat slotFormat = header.SlotFormat(); slotFormat.WriteObjectClassID(target, newID); slotFormat.SkipMarshallerInfo(target); slotFormat.ReadHeaderAttributes(target); return(header); }
private void DeleteMembers(StatefulBuffer objectBytes) { ObjectHeader oh = new ObjectHeader(_clazz, objectBytes); DeleteInfo info = (DeleteInfo)TreeInt.Find(_transaction._delete, _id); if (info != null) { if (info._cascade > _cascade) { _cascade = info._cascade; } } objectBytes.SetCascadeDeletes(_cascade); DeleteContextImpl context = new DeleteContextImpl(objectBytes, oh, _clazz.ClassReflector (), null); _clazz.DeleteMembers(context, _typeInfo, true); }
protected virtual void RebuildIndexForWriter(LocalObjectContainer container, StatefulBuffer buffer, int objectId) { ObjectHeader objectHeader = new ObjectHeader(container, buffer); ObjectIdContextImpl context = new ObjectIdContextImpl(container.SystemTransaction (), buffer, objectHeader, objectId); ClassMetadata classMetadata = context.ClassMetadata(); if (classMetadata.IsStruct()) { // We don't keep version information for structs. return; } if (classMetadata.SeekToField(container.SystemTransaction(), buffer, versionFieldMetadata ) != HandlerVersion.Invalid) { long version = ((long)versionFieldMetadata.Read(context)); if (version != 0) { LocalTransaction t = (LocalTransaction)container.SystemTransaction(); t.CommitTimestampSupport().Put(container.SystemTransaction(), objectId, version); } } }
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) { var id = ((TreeInt) treeInt)._key; var reader = stream.ReadStatefulBufferById(_enclosing._enclosing. _trans, id); if (reader != null) { var oh = new ObjectHeader(stream, reader); var context = new CollectIdContext(_enclosing._enclosing._trans , oh, reader); oh.ClassMetadata().CollectIDs(context, fieldName); Tree.Traverse(context.Ids(), new _IVisitor4_394(idsNew)); } }
private ClassMetadata ReadObjectHeader() { _objectHeader = new ObjectHeader(Container(), ByteArrayBuffer()); ClassMetadata classMetadata = _objectHeader.ClassMetadata(); if (classMetadata == null) { return null; } return classMetadata; }
// Scrolls offset in passed reader to the offset the passed field should // be read at. public HandlerVersion SeekToField(Transaction trans, ByteArrayBuffer buffer, FieldMetadata field) { if (buffer == null) { return HandlerVersion.Invalid; } if (!StandardReferenceTypeHandlerIsUsed()) { return HandlerVersion.Invalid; } buffer.Seek(0); var oh = new ObjectHeader(_container, buffer); var res = oh.ClassMetadata().SeekToField(new ObjectHeaderContext(trans, buffer, oh), field); if (!res) { return HandlerVersion.Invalid; } return new HandlerVersion(oh.HandlerVersion()); }
private void CascadeDeletion(StatefulBuffer buffer, object obj) { var oh = new ObjectHeader(this, buffer); var context = new DeleteContextImpl(buffer, oh, ClassReflector(), null ); DeleteMembers(context, ArrayTypeFor(buffer, obj), false); }
public void AddFieldIndices(StatefulBuffer buffer) { if (!StandardReferenceTypeHandlerIsUsed()) { return; } if (HasClassIndex() || HasVirtualAttributes()) { var oh = new ObjectHeader(this, buffer); var context = new ObjectIdContextImpl(buffer.Transaction(), buffer , oh, buffer.GetID()); Handlers4.FieldAwareTypeHandler(CorrectHandlerVersion(context)).AddFieldIndices(context ); } }
public static ClassMetadata ReadClass(ObjectContainerBase stream, ByteArrayBuffer reader) { var oh = new ObjectHeader(stream, reader); return oh.ClassMetadata(); }
public virtual void ReadVirtualAttributes(Transaction trans, ObjectReference @ref , bool lastCommitted) { var id = @ref.GetID(); var container = trans.Container(); var buffer = container.ReadBufferById(trans, id, lastCommitted); var oh = new ObjectHeader(this, buffer); var context = new ObjectReferenceContext(trans, buffer, oh, @ref ); Handlers4.FieldAwareTypeHandler(CorrectHandlerVersion(context)).ReadVirtualAttributes (context); }
public CollectIdContext(Transaction transaction, ObjectHeader oh, IReadBuffer buffer ) : this(transaction, new IdObjectCollector(), oh, buffer) { }
public _CollectIdContext_203(QueryingReadContext readContext, Transaction baseArg1 , IdObjectCollector baseArg2, ObjectHeader baseArg3, IReadBuffer baseArg4) : base (baseArg1, baseArg2, baseArg3, baseArg4) { this.readContext = readContext; }
protected virtual void RebuildIndexForWriter(LocalObjectContainer stream, StatefulBuffer writer, int objectId) { ObjectHeader oh = new ObjectHeader(stream, writer); object obj = ReadIndexEntryForRebuild(writer, oh); AddIndexEntry(stream.SystemTransaction(), objectId, obj); }
public ObjectReferenceContext(Transaction transaction, IReadBuffer buffer, ObjectHeader objectHeader, Db4objects.Db4o.Internal.ObjectReference reference) : base(transaction , buffer, objectHeader) { _reference = reference; }
public void Visit(object treeInt) { int id = ((TreeInt)treeInt)._key; StatefulBuffer buffer = this._enclosing._container.ReadStatefulBufferById(this._enclosing ._trans, id); if (buffer != null) { ObjectHeader oh = new ObjectHeader(this._enclosing._container, buffer); CollectIdContext context = new CollectIdContext(this._enclosing._trans, oh, buffer ); oh.ClassMetadata().CollectIDs(context, fieldName); Tree.Traverse(context.Ids(), new _IVisitor4_516(idsNew)); } }
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); } }
public ObjectHeaderContext(Transaction transaction, IReadBuffer buffer, ObjectHeader objectHeader) : base(transaction, buffer) { _objectHeader = objectHeader; }
public CollectIdContext(Transaction transaction, IdObjectCollector collector, ObjectHeader oh, IReadBuffer buffer) : base(transaction, buffer, oh) { _collector = collector; }
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; }
public static void CollectIdsInternal(CollectIdContext context, ITypeHandler4 handler , int linkLength, bool doWithSlotIndirection) { if (!(IsCascading(handler))) { IReadBuffer buffer = context.Buffer(); buffer.Seek(buffer.Offset() + linkLength); return; } if (handler is StandardReferenceTypeHandler) { context.AddId(); return; } LocalObjectContainer container = (LocalObjectContainer)context.Container(); SlotFormat slotFormat = context.SlotFormat(); if (HandleAsObject(handler)) { // TODO: Code is similar to QCandidate.readArrayCandidates. Try to refactor to one place. int collectionID = context.ReadInt(); ByteArrayBuffer collectionBuffer = container.ReadBufferById(context.Transaction() , collectionID); ObjectHeader objectHeader = new ObjectHeader(container, collectionBuffer); QueryingReadContext subContext = new QueryingReadContext(context.Transaction(), context .HandlerVersion(), collectionBuffer, collectionID, context.Collector()); objectHeader.ClassMetadata().CollectIDs(subContext); return; } QueryingReadContext 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(); } }
public static Db4objects.Db4o.Internal.ClassMetadata ReadClass(ObjectContainerBase stream, ByteArrayBuffer reader) { ObjectHeader oh = new ObjectHeader(stream, reader); return oh.ClassMetadata(); }
public ObjectIdContextImpl(Transaction transaction, IReadBuffer buffer, ObjectHeader objectHeader, int id) : base(transaction, buffer, objectHeader) { _id = id; }