Ejemplo n.º 1
0
        //public byte[] Tag
        //{
        //    get
        //    {
        //        //if (ForSerialize)
        //        //    return tag;

        //        IDescriptor descriptor = GetDescriptor(this);
        //        tag = descriptor.Tag;

        //        return tag;
        //    }
        //    set
        //    {
        //        //this.ForSerialize = true;
        //        //this.tag = value;

        //        //IDescriptor descriptor = SetDescriptor(this);

        //        //tag = descriptor.Tag;
        //        //this.ForSerialize = false;
        //    }
        //}

        #endregion

        public void Serialize(BinaryWriter writer)
        {
            CountCompression.Serialize(writer, (ulong)ID);
            writer.Write(Name);

            CountCompression.Serialize(writer, (ulong)StructureType);

            KeyDataType.Serialize(writer);
            RecordDataType.Serialize(writer);

            CountCompression.Serialize(writer, (ulong)CreateTime.Ticks);
            CountCompression.Serialize(writer, (ulong)ModifiedTime.Ticks);
            CountCompression.Serialize(writer, (ulong)AccessTime.Ticks);

            if (Tag == null)
            {
                CountCompression.Serialize(writer, 0);
            }
            else
            {
                CountCompression.Serialize(writer, (ulong)Tag.Length + 1);
                writer.Write(Tag);
            }
        }
Ejemplo n.º 2
0
        private void InternalSerialize(BinaryWriter writer)
        {
            lock (SyncRoot)
            {
                writer.Write(VERSION);

                writer.Write(ID);
                if (ID == Locator.MIN.ID)
                {
                    return;
                }

                writer.Write(IsDeleted);

                writer.Write(Name);
                writer.Write(checked ((byte)StructureType));

                //data types
                KeyDataType.Serialize(writer);
                RecordDataType.Serialize(writer);

                //types
                if (!DataTypeUtils.IsAnonymousType(KeyType))
                {
                    writer.Write(KeyType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                if (!DataTypeUtils.IsAnonymousType(RecordType))
                {
                    writer.Write(RecordType.FullName);
                }
                else
                {
                    writer.Write("");
                }

                //key & record members
                WriteMembers(writer, keyMembers);
                WriteMembers(writer, recordMembers);

                //times
                writer.Write(CreateTime.Ticks);
                writer.Write(ModifiedTime.Ticks);
                writer.Write(AccessTime.Ticks);

                //tag
                if (Tag == null)
                {
                    writer.Write(false);
                }
                else
                {
                    writer.Write(true);
                    CountCompression.Serialize(writer, (ulong)Tag.Length);
                    writer.Write(Tag);
                }
            }
        }