public static int SlotHandlerVersion(IExtObjectContainer objectContainer, object obj) { int id = (int)objectContainer.GetID(obj); IObjectInfo objectInfo = objectContainer.GetObjectInfo(obj); ObjectContainerBase container = (ObjectContainerBase)objectContainer; Transaction trans = container.Transaction; ByteArrayBuffer buffer = container.ReadBufferById(trans, id); UnmarshallingContext context = new UnmarshallingContext(trans, (ObjectReference)objectInfo , Const4.Transient, false); context.Buffer(buffer); context.PersistentObject(obj); context.ActivationDepth(new LegacyActivationDepth(0)); context.Read(); return context.HandlerVersion(); }
private object WriteAndRead(object obj) { var imaginativeID = 500; var @ref = new ObjectReference(ClassMetadataForObject(obj), imaginativeID ); @ref.SetObject(obj); var marshallingContext = new MarshallingContext(Trans(), @ref, Container ().UpdateDepthProvider().ForDepth(int.MaxValue), true); Handlers4.Write(@ref.ClassMetadata().TypeHandler(), marshallingContext, obj); var pointer = marshallingContext.AllocateSlot(); var buffer = marshallingContext.ToWriteBuffer(pointer); buffer.Seek(0); // String str = new String(buffer._buffer); // System.out.println(str); var unmarshallingContext = new UnmarshallingContext(Trans(), @ref , Const4.AddToIdTree, false); unmarshallingContext.Buffer(buffer); unmarshallingContext.ActivationDepth(new LegacyActivationDepth(5)); return unmarshallingContext.Read(); }
public virtual object ReadPrefetch(Db4objects.Db4o.Internal.Transaction trans, ByteArrayBuffer buffer, int addToIDTree) { UnmarshallingContext context = new UnmarshallingContext(trans, buffer, this, addToIDTree , false); context.ActivationDepth(new FixedActivationDepth(1, ActivationMode.Prefetch)); return context.Read(); }
public object Read(Db4objects.Db4o.Internal.Transaction trans, ByteArrayBuffer buffer , object obj, IActivationDepth instantiationDepth, int addToIDTree, bool checkIDTree ) { UnmarshallingContext context = new UnmarshallingContext(trans, buffer, this, addToIDTree , checkIDTree); context.PersistentObject(obj); context.ActivationDepth(instantiationDepth); return context.Read(); }
public override object Instantiate(UnmarshallingContext context) { var obj = context.PersistentObject(); if (obj == null) { obj = context.Read(TypeHandler()); context.SetObjectWeak(obj); } context.SetStateClean(); return obj; }
public virtual void AttemptUpdate(UnmarshallingContext context) { if (!Updating()) { IncrementOffset(context); return; } int savedOffset = context.Offset(); try { object toSet = context.Read(GetHandler()); if (toSet != null) { Set(context.PersistentObject(), toSet); } } catch (Exception) { // FIXME: COR-547 Diagnostics here please. context.Buffer().Seek(savedOffset); IncrementOffset(context); } }