Ejemplo n.º 1
0
        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));
        }