public static IFileProcessor Get(int parallelismCount, int queuesCapacity, int fileChunksSize) { if (parallelismCount <= 0) parallelismCount = 1; var readingQueues = new BlockingQueue<byte[]>[parallelismCount]; var writingQueues = new BlockingQueue<byte[]>[parallelismCount]; var processors = new AbstractQueueProcessor<byte[], byte[]>[parallelismCount]; for (var i = 0; i < parallelismCount; i++) { readingQueues[i] = new BlockingQueue<byte[]>(queuesCapacity); writingQueues[i]=new BlockingQueue<byte[]>(queuesCapacity); processors[i] = new QueueByteCompressor(readingQueues[i],writingQueues[i]); } var reader = new StreamReaderToQueues(readingQueues,fileChunksSize); var writer = new StreamWriterFromQueues(writingQueues); return new ParallelProcessor(reader,processors,writer); }
public static IFileProcessor Get(int parallelismCount, int queuesCapacity, int copyingBufferSize) { if (parallelismCount <= 0) parallelismCount = 1; var readingQueues = new BlockingQueue<byte[]>[parallelismCount]; var writingQueues = new BlockingQueue<byte[]>[parallelismCount]; var processors = new AbstractQueueProcessor<byte[], byte[]>[parallelismCount]; for (var i = 0; i < parallelismCount; i++) { readingQueues[i] = new BlockingQueue<byte[]>(queuesCapacity); writingQueues[i] = new BlockingQueue<byte[]>(queuesCapacity); processors[i] = new IdenticQueueProcessor(readingQueues[i], writingQueues[i]); } var reader = new MultipartCompressedStreamReader(readingQueues, copyingBufferSize); var writer = new StreamWriterFromQueues(writingQueues); return new ParallelProcessor(reader, processors, writer); }