@ones-open/node-host
Version:
ONES Open Platform Node.js plugin host
61 lines (60 loc) • 1.97 kB
JavaScript
;
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();