private void AppendPayLoad(StatefulBuffer target, Pointer4 pointer, ByteArrayBuffer payLoad) { target.WriteInt(payLoad.Length()); target.WriteInt(pointer.Id()); target.WriteInt(pointer.Address()); target.Append(payLoad._buffer); }
public MsgD GetWriter(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata , int param, ByteArrayBuffer buffer) { return GetWriter(trans, pointer, buffer, new[] { classMetadata.GetID(), param }); }
public MsgD GetWriter(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata , ByteArrayBuffer buffer) { if (classMetadata == null) { return GetWriter(trans, pointer, buffer, new int[] { 0 }); } return GetWriter(trans, pointer, buffer, new int[] { classMetadata.GetID() }); }
internal MsgD GetWriter(Transaction trans, Pointer4 pointer, ByteArrayBuffer buffer , int[] prependInts) { int lengthNeeded = buffer.Length() + LengthForFirst; if (prependInts != null) { lengthNeeded += (prependInts.Length * Const4.IntLength); } MsgD message = GetWriterForLength(trans, lengthNeeded); if (prependInts != null) { for (int i = 0; i < prependInts.Length; i++) { message._payLoad.WriteInt(prependInts[i]); } } AppendPayLoad(message._payLoad, pointer, buffer); return message; }
public sealed override void WriteUpdate(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ArrayType arrayType, ByteArrayBuffer buffer) { MsgD msg = Msg.WriteUpdate.GetWriter(trans, pointer, classMetadata, arrayType.Value (), buffer); WriteBatchedMessage(msg); }
public sealed override void WriteNew(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ByteArrayBuffer buffer) { MsgD msg = Msg.WriteNew.GetWriter(trans, pointer, classMetadata, buffer); WriteBatchedMessage(msg); }
public abstract void WriteUpdate(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ArrayType arrayType, ByteArrayBuffer buffer);
public abstract void WriteNew(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ByteArrayBuffer buffer);
public virtual ByteArrayBuffer ToWriteBuffer(Pointer4 pointer) { ByteArrayBuffer buffer = new ByteArrayBuffer(pointer.Length()); _writeBuffer.MergeChildren(this, pointer.Address(), WriteBufferOffset()); WriteObjectClassID(buffer, ClassMetadata().GetID()); buffer.WriteByte(HandlerRegistry.HandlerVersion); buffer.WriteInt(AspectCount()); buffer.WriteBitMap(_nullBitMap); _writeBuffer.TransferContentTo(buffer); return buffer; }
public StatefulBuffer(Db4objects.Db4o.Internal.Transaction trans, Pointer4 pointer ) : this(trans, pointer._slot) { _id = pointer._id; }
public override void WriteUpdate(Transaction transaction, IUpdateDepth updatedepth ) { if (!this._firstUpdate) { base.WriteUpdate(transaction, updatedepth); return; } this._firstUpdate = false; ObjectContainerBase container = transaction.Container(); this.SetStateClean(); MarshallingContext context = new MarshallingContext(transaction, this, updatedepth , false); Handlers4.Write(this.ClassMetadata().TypeHandler(), context, this.GetObject()); int length = this.Container().BlockConverter().BlockAlignedBytes(context.MarshalledLength ()); Slot slot = context.AllocateNewSlot(length); Pointer4 pointer = new Pointer4(this.GetID(), slot); ByteArrayBuffer buffer = context.ToWriteBuffer(pointer); container.WriteUpdate(transaction, pointer, this.ClassMetadata(), ArrayType.None, buffer); if (this.IsActive()) { this.SetStateClean(); } }
public StatefulBuffer(Transaction trans, Pointer4 pointer ) : this(trans, pointer._slot) { _id = pointer._id; }
public sealed override void WriteUpdate(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ArrayType arrayType, ByteArrayBuffer buffer) { int address = pointer.Address(); if (address == 0) { address = AllocateSlotForUserObjectUpdate(trans, pointer.Id(), pointer.Length()). Address(); } WriteEncrypt(buffer, address, 0); }
public sealed override void WriteNew(Transaction trans, Pointer4 pointer, ClassMetadata classMetadata, ByteArrayBuffer buffer) { WriteEncrypt(buffer, pointer.Address(), 0); if (classMetadata == null) { return; } classMetadata.AddToIndex(trans, pointer.Id()); }
public override void WriteUpdate(Transaction transaction, IUpdateDepth updatedepth ) { if (!_firstUpdate) { base.WriteUpdate(transaction, updatedepth); return; } _firstUpdate = false; var container = transaction.Container(); SetStateClean(); var context = new MarshallingContext(transaction, this, updatedepth , false); Handlers4.Write(ClassMetadata().TypeHandler(), context, GetObject()); var length = Container().BlockConverter().BlockAlignedBytes(context.MarshalledLength ()); var slot = context.AllocateNewSlot(length); var pointer = new Pointer4(GetID(), slot); var buffer = context.ToWriteBuffer(pointer); container.WriteUpdate(transaction, pointer, ClassMetadata(), ArrayType.None, buffer); if (IsActive()) { SetStateClean(); } }