UNPKG

cod-dicomweb-server

Version:

A wadors server proxy that get data from a Cloud Optimized Dicom format.

55 lines (54 loc) 1.89 kB
import { CustomError } from '../classes/customClasses'; import { Enums } from '../constants'; import RequestManager from './requestManager'; import { isNodeEnvironment } from './utils/environment'; import WebWorkerManager from './workerManager'; class DataRetrievalManager { dataRetriever; dataRetrieverMode; constructor() { if (isNodeEnvironment()) { this.dataRetriever = new RequestManager(); this.dataRetrieverMode = Enums.DataRetrieveMode.REQUEST; } else { this.dataRetriever = new WebWorkerManager(); this.dataRetrieverMode = Enums.DataRetrieveMode.WORKER; } } getDataRetrieverMode() { return this.dataRetrieverMode; } setDataRetrieverMode(mode) { const managers = { [Enums.DataRetrieveMode.WORKER]: WebWorkerManager, [Enums.DataRetrieveMode.REQUEST]: RequestManager }; if (!(mode in managers)) { throw new CustomError('Invalid mode'); } this.dataRetriever.reset(); this.dataRetriever = new managers[mode](); this.dataRetrieverMode = mode; } register(name, arg) { // @ts-ignore this.dataRetriever.register(name, arg); } async executeTask(loaderName, taskName, options) { return await this.dataRetriever.executeTask(loaderName, taskName, options); } addEventListener(workerName, eventType, listener) { this.dataRetriever.addEventListener(workerName, eventType, listener); } removeEventListener(workerName, eventType, listener) { this.dataRetriever.removeEventListener(workerName, eventType, listener); } reset() { this.dataRetriever.reset(); } } const dataRetrievalManager = new DataRetrievalManager(); export function getDataRetrievalManager() { return dataRetrievalManager; }