예제 #1
0
 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 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 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 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);
        }