Добавлена очередь скачивания и конвертирования

This commit is contained in:
Book Pauk
2020-01-26 18:37:14 +07:00
parent b7568975e7
commit a50d61c3ce
2 changed files with 27 additions and 6 deletions

View File

@@ -1,6 +1,7 @@
const fs = require('fs-extra');
const path = require('path');
const LimitedQueue = require('../LimitedQueue');
const WorkerState = require('../WorkerState');//singleton
const FileDownloader = require('../FileDownloader');
const FileDecompressor = require('../FileDecompressor');
@@ -26,6 +27,7 @@ class ReaderWorker {
this.config.tempPublicDir = `${config.publicDir}/tmp`;
fs.ensureDirSync(this.config.tempPublicDir);
this.queue = new LimitedQueue(5, 100, 3);
this.workerState = new WorkerState();
this.down = new FileDownloader(config.maxUploadFileSize);
this.decomp = new FileDecompressor(2*config.maxUploadFileSize);
@@ -53,7 +55,21 @@ class ReaderWorker {
let downloadedFilename = '';
let isUploaded = false;
let convertFilename = '';
let q = null;
try {
wState.set({state: 'queue', step: 1, totalSteps: 1});
try {
let qSize = 0;
q = await this.queue.get((place) => {
wState.set({place, progress: (qSize ? Math.round((qSize - place)/qSize*100) : 0)});
if (!qSize)
qSize = place;
});
} catch (e) {
throw new Error('Слишком большая очередь загрузки. Пожалуйста, попробуйте позже.');
}
wState.set({state: 'download', step: 1, totalSteps: 3, url});
const tempFilename = utils.randomHexString(30);
@@ -123,6 +139,8 @@ class ReaderWorker {
wState.set({state: 'error', error: e.message});
} finally {
//clean
if (q)
q.ret();
if (decompDir)
await fs.remove(decompDir);
if (downloadedFilename && !isUploaded)