/** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2020-11-06 08:52:48 * @modify date 2020-12-02 15:15:32 * @desc [description] */ import { getSingleton } from "../helpers/singletonMethod"; import { NopeGenericModule } from "../module/GenericModule"; import { NopeObservable } from "../observables/nopeObservable"; import { INopeDispatcherOptions } from "../types/nope/nopeCommunication.interface"; import { INopeDispatcher } from "../types/nope/nopeDispatcher.interface"; import { nopeDispatcher } from "./nopeDispatcher"; /** * Function to extract a Singleton Dispatcher * @param options The provided options for the Dispatcher */ export function getDispatcher(options: INopeDispatcherOptions) { const container = getSingleton("nopeBackendDispatcher.instance", () => { const dispatcher = new nopeDispatcher(options, () => new NopeObservable()); // Register a default instance generator: // Defaultly generate a NopeGenericModule dispatcher.registerInternalInstanceGenerator( "*", async (dispather, description) => { const mod = new NopeGenericModule( dispather, () => new NopeObservable() ); await mod.fromDescription(description, "overwrite"); // await mod.init(); return mod; } ); // Return the Dispathcer return dispatcher as INopeDispatcher; }); return container.instance; }