public void NewRead(BinaryReader br) { contentType = (EContentType)br.ReadByte(); const01 = br.ReadByte(); if (const01 != 1) { throw new Exception("Hibás konstans érték!"); } blockType = (EBlockType)br.ReadByte(); blockHeaderSize = br.ReadByte(); byte[] buffer = br.ReadBytes(blockHeaderSize); br.BaseStream.Seek((long)-blockHeaderSize, SeekOrigin.Current); blockChecksum8 = Utils.ComputeBlockChecksum(const01, blockType, blockHeaderSize, buffer); long num = br.ReadInt64(); blockHeader = TBlockHeader.GenBlkHeader(br,contentType,blockType); blockHeader.Read(br); blockChecksum8 = br.ReadByte(); content = br.ReadBytes((int)blockHeader.contentSize); //blockHeader.contentLength }
public override void Read(BinaryReader br) { blockType = (EBlockType)br.ReadByte(); const01 = br.ReadByte(); Debug.Assert(const01 == 01, "Const != 01"); contentType = (EContentType)br.ReadByte(); blockSize = br.ReadByte(); // Useful to check for errors long currPos = br.BaseStream.Position; blockHeader = TBlockHeader.GenBlkHeader(br,contentType,blockType); blockHeader.Read(br); if (br.BaseStream.Position != currPos + blockSize) { long missing = (currPos + blockSize - br.BaseStream.Position); Debug.Assert(false, "Error Reading Header! ", missing + " bytes left."); // Fixes the offset and continue... br.BaseStream.Seek(missing, SeekOrigin.Current); } blockChecksum8 = br.ReadByte(); content = br.ReadBytes((int)blockHeader.contentSize); ROFSTracer.WriteTextBlock( this ); }