UNPKG

@ones-open/node-host

Version:
61 lines (60 loc) 1.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.pluginManager = exports.PluginManager = void 0; const logger_1 = require("../logger"); const plugin_1 = require("./plugin"); class PluginManager { /** * 启用的插件实例列表 */ constructor() { this.instancePlugin = new plugin_1.Plugin(); } /** * TODO * Start()方法若为同步,则此timeout无效 * Start()方法若为异步,则可能错杀,暂不执行 */ async defineTimeout() { return new Promise((_, reject) => { setTimeout(() => reject(new Error('timeout')), 3000); }); } async initPlugin(messageHandler) { this.instancePlugin .InitVM(messageHandler) .then(() => { this.instancePlugin.Start({}); logger_1.logger.info('InitPlugin success'); this.instancePlugin.logger.info('[StartPluginRuntime]'); }) .catch((e) => { logger_1.logger.info('InitPlugin error', e); this.instancePlugin.logger.info('[StartPluginRuntime] error', e); process.exit(1); }); /* Promise.race([this.defineTimeout(), this.instancePlugin.Start({} as any)]) .then(() => { logger.info('PluginManager initPlugin success') }) .catch((e) => { logger.error('PluginManager initPlugin error', e) process.exit(1) }) */ return this.instancePlugin; } async destroyPlugin() { logger_1.logger.info('[StopPluginRuntime]'); return this.instancePlugin?.Stop({}, true); } getPlugin() { return this.instancePlugin; } findPlugin(instanceId) { return this.instancePlugin.InstanceId() === instanceId ? this.instancePlugin : undefined; } } exports.PluginManager = PluginManager; exports.pluginManager = new PluginManager();