/// import {DirectoryDTO} from "../../common/entities/DirectoryDTO"; import {Logger} from "../Logger"; import {Config} from "../../common/config/private/Config"; import {DiskManagerTH} from "./threading/ThreadPool"; import {DiskMangerWorker} from "./threading/DiskMangerWorker"; const LOG_TAG = "[DiskManager]"; export class DiskManager { static threadPool: DiskManagerTH = null; public static init() { if (Config.Server.enableThreading == true) { DiskManager.threadPool = new DiskManagerTH(1); } } public static async scanDirectory(relativeDirectoryName: string): Promise { Logger.silly(LOG_TAG, "scanning directory:", relativeDirectoryName); let directory: DirectoryDTO = null; if (Config.Server.enableThreading == true) { directory = await DiskManager.threadPool.execute(relativeDirectoryName); } else { directory = await DiskMangerWorker.scanDirectory(relativeDirectoryName); } let addDirs = (dir: DirectoryDTO) => { dir.photos.forEach((ph) => { ph.directory = dir; }); dir.directories.forEach((d) => { addDirs(d); }); }; addDirs(directory); return directory; } }