public static CacheHeaderStruct Read(Stream stream) { StructSerializer <CacheHeaderStruct> minimumStructSerializer = GetStructSerializer(CacheFormatVersion.Two); stream.Seek(-minimumStructSerializer.ItemSizeOnDisk, SeekOrigin.End); CacheHeaderStruct minimumStruct = minimumStructSerializer.ReadArray(stream, 1)[0]; StructSerializer <CacheHeaderStruct> actualStructSerializer = GetStructSerializer(minimumStruct.formatVersion); if (actualStructSerializer.ItemSizeOnDisk == minimumStructSerializer.ItemSizeOnDisk) { return(minimumStruct); } stream.Seek(-actualStructSerializer.ItemSizeOnDisk, SeekOrigin.End); return(actualStructSerializer.ReadArray(stream, 1)[0]); }
public static CacheFormat FromCacheHeader(CacheHeaderStruct cacheHeader) { var formatVersion = cacheHeader.formatVersion; if (formatVersion >= CacheHeaderStruct.WithStructSizes) { return(new CacheFormat() { FormatVersion = formatVersion, CachedFileSize = cacheHeader.cachedFileSize, ChromGroupHeaderSize = cacheHeader.chromGroupHeaderSize, ChromPeakSize = cacheHeader.chromPeakSize, ChromTransitionSize = cacheHeader.chromTransitionSize, VersionRequired = cacheHeader.versionRequired }); } return(FromVersion(formatVersion)); }