Exemple #1
0
        private void ReadHeader(LiteDB.ByteReader reader)
        {
            // first 5 bytes (pageID + pageType) was readed before class create
            // this.PageID
            // this.PageType

            this.PrevPageID = reader.ReadUInt32();
            this.NextPageID = reader.ReadUInt32();
            this.ItemCount  = reader.ReadUInt16();
            reader.ReadUInt16(); // FreeBytes;
            reader.Skip(8);      // reserved 8 bytes
        }
Exemple #2
0
        protected override void ReadContent(LiteDB.ByteReader reader)
        {
            reader.ReadString(HEADER_INFO.Length);
            reader.ReadByte();

            this.ChangeID        = reader.ReadUInt16();
            this.FreeEmptyPageID = reader.ReadUInt32();
            this.LastPageID      = reader.ReadUInt32();
            this.DbVersion       = reader.ReadUInt16();
            this.Password        = reader.ReadBytes(this.Password.Length);

            // read page collections references (position on end of page)
            var cols = reader.ReadByte();

            for (var i = 0; i < cols; i++)
            {
                this.CollectionPages.Add(reader.ReadString(), reader.ReadUInt32());
            }
        }
Exemple #3
0
        /// <summary>
        /// Read a page with correct instance page object. Checks for pageType
        /// </summary>
        public static BasePage ReadPage(byte[] buffer)
        {
            var reader = new LiteDB.ByteReader(buffer);

            var pageID   = reader.ReadUInt32();
            var pageType = (PageType)reader.ReadByte();
            var page     = CreateInstance(pageID, pageType);

            page.ReadHeader(reader);
            page.ReadContent(reader);

            return(page);
        }
Exemple #4
0
        protected override void ReadContent(LiteDB.ByteReader reader)
        {
            this.CollectionName = reader.ReadString();
            this.FreeDataPageID = reader.ReadUInt32();
            var uintCount = reader.ReadUInt32(); // read as uint (4 bytes)

            foreach (var index in this.Indexes)
            {
                index.Field           = reader.ReadString();
                index.HeadNode        = reader.ReadPageAddress();
                index.TailNode        = reader.ReadPageAddress();
                index.FreeIndexPageID = reader.ReadUInt32();
                index.Unique          = reader.ReadBoolean();
                reader.ReadBoolean(); // IgnoreCase
                reader.ReadBoolean(); // TrimWhitespace
                reader.ReadBoolean(); // EmptyStringToNull
                reader.ReadBoolean(); // RemoveAccents
            }

            // be compatible with v2_beta
            var longCount = reader.ReadInt64();

            this.DocumentCount = Math.Max(uintCount, longCount);
        }
Exemple #5
0
        protected override void ReadContent(LiteDB.ByteReader reader)
        {
            this.DataBlocks = new Dictionary <ushort, DataBlock>(ItemCount);

            for (var i = 0; i < ItemCount; i++)
            {
                var block = new DataBlock();

                block.Page         = this;
                block.Position     = new LiteDB.PageAddress(this.PageID, reader.ReadUInt16());
                block.ExtendPageID = reader.ReadUInt32();

                for (var j = 0; j < CollectionIndex.INDEX_PER_COLLECTION; j++)
                {
                    block.IndexRef[j] = reader.ReadPageAddress();
                }

                var size = reader.ReadUInt16();
                block.Data = reader.ReadBytes(size);

                this.DataBlocks.Add(block.Position.Index, block);
            }
        }