/// <summary>
 /// Создаёт конкретную реализацию файлового компрессора.
 /// </summary>
 /// <exception cref="MemoryLacksException">
 /// Длина блока, выбранная для чтения файла, превышает объём доступной памяти.
 /// </exception>
 public virtual IFileCompressor Create()
 {
     try
     {
         ICompressionFileOpener fileOpener = CreateFileOpener();
         IStream2StreamPump     pump       = CreatePump();
         IFileCompressor        compressor = new FileCompressor(fileOpener, pump);
         return(compressor);
     }
     catch (MemoryLacksException exception)
     {
         // TODO: пробовать уменьшать длину блока
         throw new MemoryLacksException("Длина блока, выбранная для чтения файла,"
                                        + " превышает объём доступной памяти.", exception);
     }
 }
Exemplo n.º 2
0
 public FileCompressor(ICompressionFileOpener fileOpener, IStream2StreamPump pump)
 {
     _pump      = pump;
     FileOpener = fileOpener;
 }