nope-js-node
Version:
NoPE Runtime for Nodejs. For Browser-Support please use nope-browser
189 lines (188 loc) • 7.85 kB
TypeScript
/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
*/
import { ILogger } from "js-logger";
import { IAvailableInstancesMsg, ICommunicationBridge, IGenericNopeModule, IInstanceCreationMsg, IInstanceDescriptionMsg, IMapBasedMergeData, INopeConnectivityManager, INopeCore, INopeDispatcherOptions, INopeEventEmitter, INopeModule, INopeModuleDescription, INopeObservable, INopeRpcManager, INopeStatusInfo, TValidAsssignmentChecker, ValidSelectorFunction } from "../../types/nope";
import { INopeInstanceManager, TConstructorCallback, TGenerateWrapperCallback } from "../../types/nope/nopeInstanceManager.interface";
/**
* Please checkout the Docu of {@link INopeInstanceManager}
*/
export declare class NopeInstanceManager implements INopeInstanceManager {
options: INopeDispatcherOptions;
protected _generateEmitter: <T>() => INopeEventEmitter<T>;
protected _generateObservable: <T>() => INopeObservable<T>;
protected _defaultSelector: ValidSelectorFunction;
protected readonly _id: string;
protected _connectivityManager: INopeConnectivityManager;
protected _rpcManager: INopeRpcManager;
protected _core: INopeCore;
protected _logger: ILogger;
/**
* The used Communication interface
*
*/
protected readonly _communicator: ICommunicationBridge;
/**
* Flag to indicate, that the system is ready.
*
* @author M.Karkowski
* @type {INopeObservable<boolean>}
* @memberof NopeInstanceManager
*/
readonly ready: INopeObservable<boolean>;
/**
* Element holding the Mapping of the Dispatcher and its instance
* generators
*
* Key = Dispatcher-ID
* Value = Available Generators
*
* @protected
* @type {Map<
* string,
* IAvailableInstanceGeneratorsMsg
* >}
* @memberof NopeInstanceManager
*/
protected _mappingOfRemoteDispatchersAndGenerators: Map<string, string[]>;
protected _internalWrapperGenerators: Map<string, TGenerateWrapperCallback<INopeModule>>;
protected _registeredConstructors: Map<string, (...args: any[]) => Promise<IInstanceDescriptionMsg>>;
protected _instances: Map<string, {
instance: INopeModule;
usedBy: Array<string>;
manual?: boolean;
}>;
protected _internalInstances: Set<string>;
protected _mappingOfRemoteDispatchersAndInstances: Map<string, IAvailableInstancesMsg>;
protected _externalInstancesNames: Set<string>;
protected _externalInstances: Map<string, INopeModuleDescription>;
protected _initializingInstance: Map<string, string>;
/**
* Element showing the available services.
* Its more or less a map, that maps the
* services with their dispatchers.
*
* T = services name.
* K = dispatcher - ids
*
* @author M.Karkowski
* @type {IMapBasedMergeData<string>}
* @memberof NopeInstanceManager
*/
readonly constructors: IMapBasedMergeData<string, // Dispatcher ID
string[], string, // Dispatcher ID
string>;
/**
* Element showing the available instances.
* Its more or less a map, that maps the
* instances with their dispatchers.
*
* - `originalKey` = DispatcherID (`string`);
* - `originalValue` = Available Instance Messages (`IAvailableInstancesMsg`);
* - `extractedKey` = The name of the Instance (`string`);`
* - `extractedValue` = instance-description (`INopeModuleDescription`);
*
* @author M.Karkowski
* @type {IMapBasedMergeData<
* string,
* string,
* IAvailableInstancesMsg
* >}
* @memberof NopeInstanceManager
*/
readonly instances: IMapBasedMergeData<string, // Dispatcher ID
IAvailableInstancesMsg, // Available Instance Messages
string, // The name of the Instance?
INopeModuleDescription>;
readonly constructorServices: INopeObservable<string[]>;
/**
* Contains the identifiers of the instances, which are hosted in the provided dispatcher.
*
* @author M.Karkowski
* @type {INopeObservable<string[]>}
* @memberof NopeInstanceManager
*/
readonly internalInstances: INopeObservable<string[]>;
/**
* Create the Instance Manager.
*/
constructor(options: INopeDispatcherOptions, _generateEmitter: <T>() => INopeEventEmitter<T>, _generateObservable: <T>() => INopeObservable<T>, _defaultSelector: ValidSelectorFunction, _id?: string, _connectivityManager?: INopeConnectivityManager, _rpcManager?: INopeRpcManager, _core?: INopeCore);
/**
* Update the Available Instances
*
* @protected
* @memberof NopeInstanceManager
*/
protected _sendAvailableInstances(): Promise<void>;
/**
* Internal Function, used to initialize the Dispatcher.
* It subscribes to the "Messages" of the communicator.
*
* @protected
* @memberof NopeInstanceManager
*/
protected _init(): Promise<void>;
/**
* Helper to get the corresponding Service name
* @param {string} name name
* @param {"constructor" | "dispose"} type The desired type of the requested service name
* @returns {string} the name.
*/
getServiceName(name: string, type: "constructor" | "dispose"): string;
/**
* Function, that will extract the information of the instance and the
* the providing dispatcher.
*
* @author M.Karkowski
* @param {string} identifier The identifier of instance
* @return {*} {(INopeModuleDescription & { dispatcher: IDispatcherInfo })}
* @memberof nopeDispatcher
*/
protected _getInstanceInfo(identifier: string): {
description: INopeModuleDescription;
dispatcher: INopeStatusInfo;
} | undefined;
/**
* Helper to remove a dispatcher.
*
* @author M.Karkowski
* @param {string} dispatcher
* @memberof NopeRpcIn
*/
removeDispatcher(dispatcher: string): void;
registerConstructor<I extends INopeModule>(identifier: string, cb: TConstructorCallback<I>): Promise<void>;
unregisterConstructor(identifier: string): Promise<void>;
registerInternalWrapperGenerator<I extends INopeModule>(identifier: string, cb: TGenerateWrapperCallback<I>): void;
unregisterInternalWrapperGenerator(identifier: string): void;
instanceExists(identifier: string, externalOnly?: boolean): boolean;
getManagerOfInstance(identifier: string): INopeStatusInfo | undefined;
getInstanceDescription(instanceIdentifier: string): false | INopeModuleDescription;
constructorExists(typeIdentifier: string): boolean;
generateWrapper<I = IGenericNopeModule>(description: Partial<IInstanceCreationMsg>): Promise<I & IGenericNopeModule>;
createInstance<I = IGenericNopeModule>(description: Partial<IInstanceCreationMsg>, options?: {
selector?: ValidSelectorFunction;
assignmentValid?: TValidAsssignmentChecker;
linkProperties?: boolean;
linkEvents?: boolean;
}): Promise<I & IGenericNopeModule>;
registerInstance<I extends INopeModule>(instance: I): Promise<I>;
deleteInstance<I extends INopeModule>(instance: I | string, preventSendingUpdate?: boolean, callInstanceDispose?: boolean): Promise<boolean>;
getInstancesOfType<I extends INopeModule>(type: string): Promise<I[]>;
reset(): void;
/**
* Describes the Data.
* @returns
*/
toDescription(): {
constructors: {
all: string[];
internal: string[];
};
instances: {
all: INopeModuleDescription[];
internal: string[];
};
};
dispose(): Promise<void>;
}