/// <inheritdoc /> public override int Deserialize(Core.Utility.BinaryReader reader) { Primary = reader.ReadInt32(); Secondary = reader.ReadInt32(); Current = reader.ReadInt32(); return(DeserializeByteCount); }
private static long FindNextEntry(Core.Utility.BinaryReader reader, GZipMemberEntry currentEntry) { var foundMagic = false; var positionOfNextEntry = -1L; try { var magic = reader.ReadByte(); while (true) { if (magic == MagicIdentifier[0]) { magic = reader.ReadByte(); if (magic == MagicIdentifier[1]) { foundMagic = true; break; } } else { magic = reader.ReadByte(); } } } catch (EndOfStreamException) { positionOfNextEntry = reader.BaseStream.Length; } catch (IOException) { } if (foundMagic || (positionOfNextEntry == reader.BaseStream.Length)) { // go back 4 (CRC32) + 4 (size mod 2^32) [+ 2 (magic)] var offset = sizeof(uint) + sizeof(int); var origin = SeekOrigin.End; if (foundMagic) { offset += MagicIdentifier.Length; origin = SeekOrigin.Current; } reader.BaseStream.Seek(-offset, origin); currentEntry.Crc32 = reader.ReadUInt32(); currentEntry._length = reader.ReadInt32(); positionOfNextEntry = reader.BaseStream.Position; } return(positionOfNextEntry); }