public GZipManager(string inFile, ISourceReader reader, IChunkWriter chunkWriter, IFileSplitterFactory fileSplitterFactory, ICompressorFactory compressorFactory, ITaskFactory taskFactory, IErrorLogs errorLogs) { _chunkWriter = chunkWriter; _sourceReader = reader; _taskFactory = taskFactory; _inFile = inFile; _fileSplitterFactory = fileSplitterFactory; _compressorFactory = compressorFactory; _errorLogs = errorLogs; }
public FileWriterTask(int chunksCount, IChunkWriter chunkWriter, IErrorLogs errorLogs) { _chunksCount = chunksCount; _chunkWriter = chunkWriter; _errorLogs = errorLogs; _thread = new Thread(Consume) { IsBackground = true, Name = "Background worker (file writer)" }; _thread.Start(); }
public ChunksReader(int workersCount, ISourceReader reader, IGZipCompressor compressor, IWriterTask writerTask, IErrorLogs errorLogs) { _compressor = compressor; _fileReader = reader; _writerTask = writerTask; _errorLogs = errorLogs; _threads = new List <Thread>(); for (int i = 0; i < workersCount; ++i) { Thread thread = new Thread(Consume) { IsBackground = true, Name = $"Background worker (chunks queue): {i}" }; _threads.Add(thread); thread.Start(); } }
public void Init() { _errorLogs = new ErrorLogs(); }
/// <summary> /// Create task for writing chunks after compression, decompression /// </summary> /// <param name="chunksCount">Count of chunks for write</param> /// <param name="chunkWriter">Writer</param> /// <param name="errorLogs">Execution error logs</param> /// <returns>Writer task</returns> public IWriterTask CreatWriterTask(int chunksCount, IChunkWriter chunkWriter, IErrorLogs errorLogs) { return(new FileWriterTask(chunksCount, chunkWriter, errorLogs)); }
/// <summary> /// Create queue for processing chunks from the source /// </summary> /// <param name="workersCount">Thread count in queue</param> /// <param name="reader">Reader from source</param> /// <param name="compressor">Interface for compression, decompression</param> /// <param name="writerTask">Task for write data</param> /// <param name="errorLogs">Execution error logs</param> /// <returns>Chunks queue</returns> public IChunksReader CreateChunksReader(int workersCount, ISourceReader reader, IGZipCompressor compressor, IWriterTask writerTask, IErrorLogs errorLogs) { return(new ChunksReader(workersCount, reader, compressor, writerTask, errorLogs)); }