public void TestWrite() { IGZipBlockWriter blockWriter = new BlockWriter(); Stream compressedStream = TestUtils.Compress(10); Block block = new Block { ExtraField = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, OriginalFileName = "test.txt", Comment = "test", Flags = GZipFlags.FEXTRA | GZipFlags.FNAME | GZipFlags.FCOMMENT }; blockWriter.Write( compressedStream, block, BlockFlags.ExtraField | BlockFlags.OriginalFileName | BlockFlags.Comment | BlockFlags.Flags ); IBlockReader blockReader = new BlockReader(); Block newBlock = blockReader.Read(compressedStream, BlockFlags.All); Assert.AreEqual(block.Flags, newBlock.Flags); CollectionAssert.AreEqual(block.ExtraField, newBlock.ExtraField); Assert.AreEqual(block.Comment, newBlock.Comment); Assert.AreEqual(block.OriginalFileName, newBlock.OriginalFileName); }
public void ReadWriteTest(int count) { var bw = new BlockWriter(_filepath); var r = new Random(); var testData = new byte[count]; var testblock = new Datablock { Data = testData, Count = testData.Length }; bw.Write(testblock, 0); var testblock2 = new Datablock { Data = new byte[count] }; var br = new BlockReader(_filepath); br.Read(testblock2, 0, testblock.Count); CollectionAssert.AreEqual(testblock.Data, testblock2.Data); Assert.AreEqual(testblock.Count, testblock.Count); }
public void EvalBlock(RCRunner runner, RCClosure closure, RCCube right) { BlockWriter writer = new BlockWriter(right); RCBlock result = writer.Write(); runner.Yield(closure, result); }
private void Write(BlockWriter writer) { while (!_isCancelled && _writeBlockQueue.TryDequeue(out Block block)) { writer.Write(block); } writer.Dispose(); }
public void Work(int blockNumber) { var blockReader = new BlockReader(_srcFilePath); var blockArchiver = new BlockArchiver(); var blockWriter = new BlockWriter(_trgFilePath); var readBlock = new Datablock { Data = new byte[1100000], Count = 1000000 }; var writeBlock = new Datablock { Data = new byte[1100000] }; blockReader.Read(readBlock, 0, 1000000); blockArchiver.Compress(readBlock, writeBlock); blockWriter.Write(writeBlock, 0); }
public void WriteAndFlush_WritesInOrderToEachLineUntilMaxLengthExceeded() { StringBuilder sb = new StringBuilder(); using (StringWriter writer = new StringWriter(sb)) { BlockWriter blockWriter = new BlockWriter(writer, 2, 13); blockWriter.Write("a234567 "); blockWriter.Write("b234567 "); blockWriter.Write("c012 "); blockWriter.Write("d012 "); blockWriter.Write("e5 "); blockWriter.Write("f5 "); Assert.Equal("a234567 c012 \r\nb234567 d012 \r\n\r\n", sb.ToString()); blockWriter.Flush(); Assert.Equal("a234567 c012 \r\nb234567 d012 \r\n\r\ne5 \r\nf5 \r\n\r\n", sb.ToString()); } }
public void Write(string outputFilePath, OutputQueue outputQueue, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(outputFilePath)) { throw new ArgumentException("Output file path must be non-empty"); } if (outputQueue == null) { throw new ArgumentNullException("Output queue must be non-empty"); } GZipMultiStreamHeader multiStreamHeader = new GZipMultiStreamHeader(); for (int i = 0; i < outputQueue.Count; i++) { if (cancellationToken.IsCancellationRequested) { break; } OutputWorkItem workItem = outputQueue[i]; MultiStreamHeaderItem multiStreamHeaderItem = new MultiStreamHeaderItem { Length = workItem.OutputStream.Stream.Length }; multiStreamHeader.Items.Add(multiStreamHeaderItem); } OutputWorkItem firstOutputWorkItem = outputQueue[0]; IBlockReader blockReader = new BlockReader(); firstOutputWorkItem.OutputStream.Stream.Position = 0; Block block = blockReader.Read(firstOutputWorkItem.OutputStream.Stream, BlockFlags.All); if (cancellationToken.IsCancellationRequested) { return; } block.ExtraField = multiStreamHeader.Serialize(); multiStreamHeader.Items[0].Length = block.Length; block.ExtraField = multiStreamHeader.Serialize(); block.Flags |= GZipFlags.FEXTRA; IGZipBlockWriter blockWriter = new BlockWriter(); using (FileStream outputFileStream = File.Create(outputFilePath)) { blockWriter.Write(outputFileStream, block, BlockFlags.All); for (int i = 1; i < outputQueue.Count; i++) { if (cancellationToken.IsCancellationRequested) { break; } OutputWorkItem workItem = outputQueue[i]; using (Stream compressedStream = workItem.OutputStream.Stream) { compressedStream.Position = 0; compressedStream.CopyTo(outputFileStream); } } } }