Exemplo n.º 1
0
 public Database(string dbName)
 {
     name    = dbName;
     version = Global.Version.VERSION_LATEST;
 }
Exemplo n.º 2
0
 public Database()
 {
     name    = "";
     version = Global.Version.VERSION_INVALID;
 }
Exemplo n.º 3
0
 public Database(string dbName, Global.Version ver)
 {
     name    = dbName;
     version = ver;
 }
Exemplo n.º 4
0
        public void Read(ref Buffer buffer)
        {
            version = (Global.Version)buffer.ReadBytesShort();

            if (version == Global.Version.VERSION_INVALID)
            {
                throw new ArgumentOutOfRangeException("version", "Invalid database version!");
            }
            if (version > Global.Version.VERSION_LATEST)
            {
                throw new ArgumentOutOfRangeException("version", "Unsupported version!");
            }

            switch (version)
            {
            case Global.Version.VERSION_1_0:
                name = buffer.ReadBytesString();

                buffer.AddOffset(sizeof(uint));                         //we skip the size (don't need it)

                ushort objectCount = (ushort)buffer.ReadBytesShort();

                for (ushort i = 0; i < objectCount; i++)
                {
                    Object obj = new Object();

                    obj.Read(ref buffer);
                    AddObject(obj);
                }

                break;

            case Global.Version.VERSION_2_0:
                name = buffer.ReadBytesString();

                uint checksum = (uint)buffer.ReadBytesInt32();

                uint p    = buffer.Position;
                uint size = (uint)buffer.ReadBytesInt32() - sizeof(short) - sizeof(short) - (uint)name.Length - sizeof(uint);

                if (crc32(buffer.Data, p, size) != checksum)
                {
                    throw new ArgumentOutOfRangeException("crc32", "Checksum mismatch!");
                }

                // objectCount already defined in case VERSION_1_0
                objectCount = (ushort)buffer.ReadBytesShort();

                for (ushort i = 0; i < objectCount; i++)
                {
                    Object obj = new Object();

                    obj.Read(ref buffer);
                    AddObject(obj);
                }

                break;

            default:
                throw new ArgumentOutOfRangeException("version", "Invalid database version!");
            }
        }