예제 #1
0
 private EntitySerialization01.EntityState OnChangeAllFieldValues(EntitySerialization01.EntityState newState = EntitySerialization01.EntityState.SET)
 {
     EntitySerialization01.EntityState prevState = ___entitystate;
     for (int fi = (int)EntitySerialization01.FieldIndices.HEADERFIELDS; fi < ___nfields; fi++)
     {
         OnChangeFieldValue((EntitySerialization01.FieldIndices)fi, newState);
     }
     return(prevState);
 }
예제 #2
0
        public byte[] Serialize()
        {
            if (___entitystate == EntitySerialization01.EntityState.UNINITIALIZED)
            {
                Initialize();
            }

            EntitySerialization01.EntityState oldState = OnChangeState(EntitySerialization01.EntityState.SERIALIZED);

            byte[][] fieldBuffer = new byte[this.___nfields][];

            // Entity System fields
            fieldBuffer[0] = FieldSerialization01.GetFieldBuffer(this.__entitytypehash);
            fieldBuffer[1] = FieldSerialization01.GetFieldBuffer(this.__created);
            fieldBuffer[2] = FieldSerialization01.GetFieldBuffer(this.__modified);
            fieldBuffer[3] = FieldSerialization01.GetFieldBuffer(this.__changeindex);

            // Entity Data fields
            fieldBuffer[4] = FieldSerialization01.GetFieldBuffer(this._imageVersion);
            fieldBuffer[5] = FieldSerialization01.GetFieldBuffer(this._imageName);
            fieldBuffer[6] = FieldSerialization01.GetFieldBuffer(this._imageContent);

            int lBuffer = EntitySerialization01.NHEADERFIELDS * sizeof(byte);

            for (int fi = 0; fi < ___nfields; fi++)
            {
                lBuffer += fieldBuffer[fi].Length;                                     // Entity System fields plus Entity data fields
            }
            byte[] buffer     = new byte[lBuffer];
            int    bufferBase = 0;

            // Entity Header fields
            buffer[bufferBase++] = ___entityserializationsignature;
            buffer[bufferBase++] = ___entityserializationversion;
            buffer[bufferBase++] = ___fieldserializationversion;
            buffer[bufferBase++] = (byte)___entitystate;
            buffer[bufferBase++] = ___nfields;

            // Entity System fields plus Entity data fields
            for (int fi = 0; fi < ___nfields; fi++)
            {
                if (bufferBase + fieldBuffer[fi].Length > lBuffer)
                {
                    OnChangeState(EntitySerialization01.EntityState.EXCEPTION_SERIALIZATION);
                    return(Array.Empty <byte>());
                }
                fieldBuffer[fi].CopyTo(buffer, bufferBase);
                bufferBase += fieldBuffer[fi].Length;
            }

            ___entitystate = oldState;

            return(buffer);
        }
예제 #3
0
 private EntitySerialization01.EntityState OnChangeFieldValue(EntitySerialization01.FieldIndices eField, EntitySerialization01.EntityState newState = EntitySerialization01.EntityState.SET)
 {
     EntitySerialization01.EntityState prevState = ___entitystate;
     if (newState != EntitySerialization01.EntityState.DONTCHANGESTATE)
     {
         ___entitystate = newState;
     }
     __modified = DateTime.UtcNow.Ticks;
     __changeindex++;
     return(prevState);
 }
예제 #4
0
        private void Initialize()
        {
            // Entity Header fields
            ___entityserializationsignature = EntitySerialization01.ENTITYSERIALIZATION_SIGNATURE;
            ___entityserializationversion   = EntitySerialization01.ENTITYSERIALIZATION_VERSION;
            ___fieldserializationversion    = FieldSerialization01.FIELDSERIALIZATION_VERSION;
            ___entitystate = EntitySerialization01.EntityState.INITIALIZED;
            ___nfields     = EntitySerialization01.NSYSTEMFIELDS + __NENTITYFIELDS;

            // Entity System fields
            __entitytypehash = ENTITY_TYPE;
            __created        = DateTime.UtcNow.Ticks;
            __modified       = 0;
            __changeindex    = 0;

            // Entity Data fields
            _imageVersion = 0;
            _imageName    = String.Empty;
            _imageContent = Array.Empty <byte>();
        }
예제 #5
0
        public ImageLedgerEntry01(int imageversion, string imagename, byte[] imagecontent)
        {
            // Entity Header fields
            ___entityserializationsignature = EntitySerialization01.ENTITYSERIALIZATION_SIGNATURE;
            ___entityserializationversion   = EntitySerialization01.ENTITYSERIALIZATION_VERSION;
            ___fieldserializationversion    = FieldSerialization01.FIELDSERIALIZATION_VERSION;
            ___entitystate = EntitySerialization01.EntityState.INITIALIZED;
            ___nfields     = EntitySerialization01.NSYSTEMFIELDS + __NENTITYFIELDS;

            // Entity System fields
            __entitytypehash = ENTITY_TYPE;
            __created        = DateTime.UtcNow.Ticks;
            __modified       = 0;
            __changeindex    = 0;

            // Entity Data fields
            _imageVersion = imageversion;
            _imageName    = imagename;
            _imageContent = imagecontent;
        }
예제 #6
0
        public UserLedgerEntry01(int id, string username, string passphrase)
        {
            // Entity Header fields
            ___entityserializationsignature = EntitySerialization01.ENTITYSERIALIZATION_SIGNATURE;
            ___entityserializationversion   = EntitySerialization01.ENTITYSERIALIZATION_VERSION;
            ___fieldserializationversion    = FieldSerialization01.FIELDSERIALIZATION_VERSION;
            ___entitystate = EntitySerialization01.EntityState.INITIALIZED;
            ___nfields     = EntitySerialization01.NSYSTEMFIELDS + __NENTITYFIELDS;

            // Entity System fields
            __entitytypehash = ENTITY_TYPE;
            __created        = DateTime.UtcNow.Ticks;
            __modified       = 0;
            __changeindex    = 0;

            // Entity Data fields
            _id         = id;
            _username   = username;
            _passphrase = passphrase;
        }
예제 #7
0
 private EntitySerialization01.EntityState OnChangeState(EntitySerialization01.EntityState newState)
 {
     EntitySerialization01.EntityState prevState = ___entitystate;
     OnChangeFieldValue(EntitySerialization01.FieldIndices.HEADERFIELDS, newState);
     return(prevState);
 }