Beispiel #1
0
        public const int ItemSize = (1 + 8 + 4 + 4) + 1;         // 1 more than length of fields

        internal MultiStreamItemHeader(QQnBinaryReader reader)
        {
            byte version = reader.ReadByte();

            if (version == 1)
            {
                _offset   = reader.ReadInt64();
                _length   = reader.ReadUInt32();               // As uint
                _itemType = reader.ReadInt32();
            }
            else if (version == 2)
            {
                // Define some format which allows +4GB substream
                // When this is used we will need some more padding space; but it probably will never be written anyway
                // At least we can read them with this version

                _offset   = reader.ReadInt64();
                _length   = reader.ReadInt64();               // As long
                _itemType = reader.ReadInt32();
            }
            else
            {
                throw new InvalidOperationException();
            }
        }