UNPKG

cod-dicomweb-server

Version:

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

66 lines (65 loc) 2.45 kB
import { CustomError } from '../classes/customClasses'; class RequestManager { loaderRegistry = {}; register(loaderName, loaderObject) { try { if (!loaderObject) { throw new CustomError(`Loader object for ${loaderName} is not provided`); } this.loaderRegistry[loaderName] = { loaderObject, listeners: {} }; } catch (error) { console.warn(error); throw new CustomError('throws'); } } listenerCallback = (loaderName, taskName, args) => { const listeners = this.loaderRegistry[loaderName]?.listeners[taskName]; if (listeners) { listeners.forEach((listener) => listener({ data: args })); } }; async executeTask(loaderName, taskName, options) { const loaderObject = this.loaderRegistry[loaderName]?.loaderObject; if (!loaderObject) { throw new CustomError(`Loader ${loaderName} not registered`); } try { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore return await loaderObject[taskName](options, (args) => this.listenerCallback(loaderName, 'message', args)); } catch (error) { console.error(`Error executing task "${taskName}" on "${loaderName}":`, error); throw new CustomError(`Task "${taskName}" failed: ${error.message}`); } } addEventListener(workerName, eventType, listener) { const loaderObject = this.loaderRegistry[workerName]; if (!loaderObject) { console.error(`Loader '${workerName}' is not registered.`); return; } if (!loaderObject.listeners[eventType]) { loaderObject.listeners[eventType] = [listener]; } else { loaderObject.listeners[eventType].push(listener); } } removeEventListener(workerName, eventType, listener) { const loaderObject = this.loaderRegistry[workerName]; if (!loaderObject) { console.error(`Loader '${workerName}' is not registered.`); return; } loaderObject.listeners[eventType] = (loaderObject.listeners[eventType] || []).filter((existingListener) => existingListener !== listener); } reset() { this.loaderRegistry = {}; } } export default RequestManager;