Пример #1
0
            /// <inheritdoc />
            public int Read(BinaryReader reader)
            {
                var byteCount = 0;
                var header    = reader.ReadBytes(TableHead.Length);

                byteCount += TableHead.Length;
                if (!CompareBytes(header, GetHashedBytes(TableHead, TableIdx)))
                {
                    throw new ConfigException("Invalid Table Header");
                }
                byteCount  += ConfigStructureUtils.ReadString(reader, out var tableName);
                TableName   = tableName;
                ColumnCount = reader.ReadUInt16();
                byteCount  += sizeof(ushort);
                for (var i = 0; i < ColumnCount; ++i)
                {
                    byteCount += ConfigStructureUtils.ReadString(reader, out var colName);
                    ColumnName.Add(colName);
                    var colSep = reader.ReadByte();
                    if (colSep != ColSep)
                    {
                        throw new ConfigException("Invalid Column Separator");
                    }
                    byteCount += 1;
                }
                RowCount   = reader.ReadUInt32();
                byteCount += sizeof(uint);
                for (var i = 0; i < RowCount; ++i)
                {
                    var rowItem = new RowItem(ColumnCount);
                    byteCount += rowItem.Read(reader);
                    RowData.Add(rowItem);
                    var sep = reader.ReadBytes(RowSep.Length);
                    byteCount += RowSep.Length;
                    if (!CompareBytes(sep, GetHashedBytes(RowSep, i)))
                    {
                        throw new ConfigException("Invalid Row Separator");
                    }
                }
                return(byteCount);
            }