private static CacheHeader GetHeader(BlockStream blockStream, out DemoCustomHeader customHeader) { var header = (CacheHeader)blockStream.ReadHeader(CacheHeader.Read, DemoCustomHeader.Read); customHeader = header.CustomHeader as DemoCustomHeader; return(header); }
private static void WriteBlockStream(ICompressionAlgorithm compressionAlgorithm, CacheHeader header, DemoCustomHeader customHeader, MemoryStream ms, string s) { using (var blockStream = new BlockStream(compressionAlgorithm, ms, CompressionMode.Compress, true)) using (var writer = new ExtendedBinaryWriter(blockStream)) { CheckReadException(blockStream); blockStream.WriteHeader(header.Write); var bp = new BlockStream.BlockPosition(); // detect that we have written a block blockStream.GetBlockPosition(bp); writer.WriteOptAscii(s); blockStream.GetBlockPosition(bp); // here we write a test string that won't invoke a new block blockStream.GetBlockPosition(customHeader.DemoPosition); writer.WriteOptAscii(SmallString); blockStream.GetBlockPosition(bp); Assert.Equal(customHeader.DemoPosition.FileOffset, blockStream.Position); blockStream.Flush(); // this will be flushed during dispose writer.WriteOptAscii(FinalString); } }
public static DemoHeader Read(Stream stream) { DemoHeader header; using (var reader = new BinaryReader(stream, Encoding.Default, true)) { var baseHeader = Read(reader); var customHeader = DemoCustomHeader.Read(reader); header = new DemoHeader(baseHeader.Identifier, baseHeader.SchemaVersion, baseHeader.DataVersion, baseHeader.Source, baseHeader.CreationTimeTicks, baseHeader.Assembly, customHeader); } return(header); }
public void BlockStream_EndToEnd() { string expectedString = GetRandomString(Block.DefaultSize + 10000); var customHeader = new DemoCustomHeader(-1, -1); var header = new DemoHeader(CacheConstants.Identifier, CacheConstants.SchemaVersion, CacheConstants.DataVersion, Source.Ensembl, NumTicks, ExpectedAssembly, customHeader); using (var ms = new MemoryStream()) { WriteBlockStream(Zstd, header, customHeader, ms, expectedString); ms.Position = 0; ReadFromBlockStream(Zstd, ms, expectedString); } }
public void BlockStream_EndToEnd() { string expectedString = GetRandomString(Block.DefaultSize + 10000); var customHeader = new DemoCustomHeader(new BlockStream.BlockPosition()); var header = new CacheHeader(CacheConstants.Identifier, CacheConstants.SchemaVersion, CacheConstants.DataVersion, Source.Ensembl, NumTicks, ExpectedGenomeAssembly, customHeader); using (var ms = new MemoryStream()) { WriteBlockStream(Qlz, header, customHeader, ms, expectedString); ms.Seek(0, SeekOrigin.Begin); ReadFromBlockStream(Qlz, ms, expectedString); } }
private static void WriteBlockStream(ICompressionAlgorithm compressionAlgorithm, DemoHeader header, DemoCustomHeader customHeader, Stream ms, string s) { using (var blockStream = new BlockStream(compressionAlgorithm, ms, CompressionMode.Compress, true)) using (var writer = new ExtendedBinaryWriter(blockStream)) { CheckReadException(blockStream); blockStream.WriteHeader(header.Write); writer.WriteOptAscii(s); (customHeader.FileOffset, customHeader.InternalOffset) = blockStream.GetBlockPosition(); Assert.Equal(customHeader.FileOffset, blockStream.Position); writer.WriteOptAscii(SmallString); blockStream.Flush(); // this will be flushed during dispose writer.WriteOptAscii(FinalString); } }
public DemoHeader(string identifier, ushort schemaVersion, ushort dataVersion, Source source, long creationTimeTicks, GenomeAssembly genomeAssembly, DemoCustomHeader customHeader) : base( identifier, schemaVersion, dataVersion, source, creationTimeTicks, genomeAssembly) { Custom = customHeader; }