示例#1
0
            public void Load(ITableReader reader)
            {
                Assert(reader != null);

                byte[] sign  = Signature;
                byte[] bytes = reader.ReadBytes(sign.Length);

                for (int i = 0; i < sign.Length; ++i)
                {
                    if (sign[i] != bytes[i])
                    {
                        throw new CorruptedStreamException();
                    }
                }

                uint ver        = reader.ReadUInt();
                uint tag        = reader.ReadUInt();
                int  nTotal     = reader.ReadInt();
                int  ndxDeleted = reader.ReadInt();
                int  sz         = reader.ReadInt();

                if (nTotal <= ndxDeleted || sz <= 0)
                {
                    throw new CorruptedStreamException();
                }

                CreationTime  = reader.ReadTime();
                LastWriteTime = reader.ReadTime();

                Version                = ver;
                Tag                    = tag;
                FrameCount             = nTotal;
                FirstDeletedFrameIndex = ndxDeleted;
                FrameSize              = sz;
                DataOffset             = reader.Position;

                IsDirty = false;
            }
示例#2
0
文件: DBTable.cs 项目: Adel-dz/Hub
        void Init(ITableReader reader)
        {
            int ndx = m_header.FirstDeletedFrameIndex;

            Assert(m_recycledData.Count == 0);

            while (ndx != NULL_INDEX)
            {
                m_recycledData.Add(ndx);
                reader.Position = GetFramePosition(ndx);
                ndx             = reader.ReadInt();
            }

            m_recycledData.Sort();
        }