예제 #1
0
        /// <summary>
        /// Инициализирует потоки.
        /// </summary>
        private void InitializeThreads()
        {
            var processorCount    = Environment.ProcessorCount;
            var queueSizeArgument = new ConstructorArgument(BindingsParameters.MAX_QUEUE_SIZE_NAME, processorCount);

            _readBlocksQueue  = _kernel.Get <IBlocksQueue>(queueSizeArgument);
            _writeBlocksQueue = _kernel.Get <IBlocksQueue>(queueSizeArgument);

            var readBlockQueueArgument = new ConstructorArgument(
                BindingsParameters.READ_BLOCKS_QUEUE_NAME, _readBlocksQueue);

            var blocksFileReader = _kernel.Get <IReader>(readBlockQueueArgument);

            var writeBlockQueueArgument = new ConstructorArgument(
                BindingsParameters.WRITE_BLOCKS_QUEUE_NAME, _writeBlocksQueue);

            var blocksFileWriter = _kernel.Get <IWriter>(writeBlockQueueArgument);

            _threads[0] = new Thread(blocksFileReader.Read);
            _threads[1] = new Thread(blocksFileWriter.Write);

            for (var i = 2; i < _threadsCount; i++)
            {
                var blocksCompressor = _kernel.Get <ICompressor>(readBlockQueueArgument, writeBlockQueueArgument);
                _threads[i] = new Thread(blocksCompressor.Start);
            }
        }
 public InitializeBlocksQueueService(
     IBlocksQueue blocksQueue,
     BlocksQueuePresenter blocksQueuePresenter
     )
 {
     BlocksQueue          = blocksQueue;
     BlocksQueuePresenter = blocksQueuePresenter;
 }
 public GetNextControlBlocksService(
     IBoard board,
     IBlocksQueue blocksQueue,
     IControlBlocksPresenter controlBlocksPresenter,
     BlocksQueuePresenter blocksQueuePresenter
     )
 {
     Board                  = board;
     BlocksQueue            = blocksQueue;
     ControlBlocksPresenter = controlBlocksPresenter;
     BlocksQueuePresenter   = blocksQueuePresenter;
 }
예제 #4
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="readBlocksQueue">Интерфейс очереди блоков на считывание.</param>
 /// <param name="writeBlocksQueue">Интерфейс очереди блоков на запись.</param>
 public BlocksDecompressor(IBlocksQueue readBlocksQueue, IBlocksQueue writeBlocksQueue)
 {
     _readBlocksQueue  = readBlocksQueue;
     _writeBlocksQueue = writeBlocksQueue;
 }
예제 #5
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="filePath">Путь до файла.</param>
 /// <param name="writeBlocksQueue">Интерфейс очереди блоков на запись.</param>
 public BlocksFileWriter(string filePath, IBlocksQueue writeBlocksQueue)
 {
     _filePath         = filePath;
     _writeBlocksQueue = writeBlocksQueue;
 }
예제 #6
0
 /// <summary>
 /// Конструктор.
 /// </summary>
 /// <param name="filePath">Путь до файла.</param>
 /// <param name="readBlocksQueue">Интерфейс очереди блоков на считывание.</param>
 public GZipBlocksFileReader(string filePath, IBlocksQueue readBlocksQueue)
 {
     _filePath        = filePath;
     _readBlocksQueue = readBlocksQueue;
 }