Ejemplo n.º 1
0
        /// <inheritdoc />
        public int Read(BinaryReader reader)
        {
            var byteCount = 0;
            var header    = reader.ReadBytes(MagicHead.Length);

            byteCount += MagicHead.Length;
            if (!CompareBytes(header, MagicHead))
            {
                throw new ConfigException("Invalid Header");
            }
            TableCount = reader.ReadUInt16();
            byteCount += sizeof(ushort);
            for (ushort i = 0; i < TableCount; ++i)
            {
                var tableItem = new TableItem {
                    TableIdx = i
                };
                byteCount += tableItem.Read(reader);
                TableList.Add(tableItem);
                var sep = reader.ReadBytes(TableSeparator.Length);
                byteCount += TableSeparator.Length;
                if (!CompareBytes(sep, GetHashedBytes(TableSeparator, i)))
                {
                    throw new ConfigException("Invalid Table Separator");
                }
            }
            var end = reader.ReadBytes(MagicEnd.Length);

            byteCount += MagicEnd.Length;
            if (!CompareBytes(end, MagicEnd))
            {
                throw new ConfigException("Invalid End");
            }
            return(byteCount);
        }