Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
                }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
            }
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
                }
        }
Beispiel #7
0
 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;
 }