Exemple #1
0
 public static IEnumerable <ArraySegment <byte> > CompressIntoBlocksWith(this string text, int readBufferSize, IBlockCompression blockCompression)
 {
     using (var memoryStream = text.AsStream())
     {
         foreach (var bytes in memoryStream.SpitToBytes(readBufferSize))
         {
             var block      = new Block(bytes, memoryStream.Position);
             var compressed = blockCompression.Compress(block);
             yield return(compressed.Bytes);
         }
     }
 }
Exemple #2
0
 private IWorkerTask RunEnqueueingInputFileBlockCompression(
     Stream inputStream,
     long offset,
     BlockingTasksQueue tasksQueue)
 {
     return(new DelegateWorkerTask(
                "reader",
                () =>
     {
         try
         {
             var inputFile = new InputFile(inputStream);
             var readBlocks = inputFile.ReadBlocks(settings.InputFileReadingBufferSize, offset);
             foreach (var(block, error) in readBlocks)
             {
                 if (error.HasValue)
                 {
                     throw new CompressorException(error.Value);
                 }
                 var task = new DelegateTask(offset.ToString(), () => compression.Compress(block));
                 tasksQueue.EnqueueTask(task);
                 offset = block.Offset;
             }
         }