Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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();
 }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
 public void Init()
 {
     _errorLogs = new ErrorLogs();
 }
Esempio n. 5
0
 /// <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));
 }
Esempio n. 6
0
 /// <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));
 }