cod-dicomweb-server
Version:
A wadors server proxy that get data from a Cloud Optimized Dicom format.
55 lines (54 loc) • 1.89 kB
JavaScript
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;
}