public static Worker <Block, Block> CreateDestinationWorker(BinaryWriter writer, int blocksNumber, int blockLength, PackerMode packerMode, IGettableConveyer <Block> gettableConveyer, ILoggable logger) { IPuttableConveyer <Block> puttableConveyer; if (packerMode == PackerMode.Pack) { BinaryBlockWriter.WriteInfo(writer, blocksNumber, blockLength); puttableConveyer = new PutOnlyConveyer <Block>((Block block) => { BinaryBlockWriter.WritePackedBlock(writer, block); }); } else { puttableConveyer = new PutOnlyConveyer <Block>((Block block) => { BinaryBlockWriter.WriteBlock(writer, block, blockLength); }); } return(new Worker <Block, Block>("Destination", gettableConveyer, puttableConveyer, logger, block => block)); }
public static Worker <Block, Block> CreateSourceWorker(BinaryReader reader, int blocksNumber, int blockLength, PackerMode packerMode, IPuttableConveyer <Block> puttableConveyer, ILoggable logger) { IEnumerator <Block> enumerator; if (packerMode == PackerMode.Pack) { enumerator = BinaryBlockReader.CreateRawBlocksEnumerator(reader, blockLength); } else { enumerator = BinaryBlockReader.CreatePackedBlocksEnumerator(reader, blocksNumber); } IGettableConveyer <Block> gettableConveyer = new GetOnlyConveyer <Block>((out bool stopped) => { stopped = !enumerator.MoveNext(); return(stopped ? null : enumerator.Current); }); return(new Worker <Block, Block>("Source", gettableConveyer, puttableConveyer, logger, block => block)); }
public PackedChangedEventArgs(PackerMode mode, int count) { Mode = mode; Count = count; }
protected virtual void RaisePackedChangedEvent(PackerMode mode, int count) { PackedChanged?.Invoke(this, new PackedChangedEventArgs(mode, count)); }
public static ExitStatus Run(Stream source, Stream destination, IPackerEngine packer, PackerMode packerMode, int blockLength, int parallelismDegree, CancellationTokenSource token, ILoggable logger) { using (BinaryReader sourceReader = new BinaryReader(source)) { using (BinaryWriter destinationWriter = new BinaryWriter(destination)) { return(Run(sourceReader, destinationWriter, packer, packerMode, blockLength, parallelismDegree, token, logger)); } } }
public static CompressionMode ToCompressionMode(this PackerMode engineMode) { return(engineMode == PackerMode.Compress ? CompressionMode.Compress : CompressionMode.Decompress); }