2018-05-22 21:34:54 +00:00
|
|
|
const ProcessLauncher = require('../process/processLauncher');
|
|
|
|
const utils = require('../utils/utils.js');
|
|
|
|
const constants = require('../constants');
|
|
|
|
|
2018-05-23 12:40:09 +00:00
|
|
|
class BlockchainProcessLauncher {
|
2018-05-22 21:34:54 +00:00
|
|
|
|
|
|
|
constructor (options) {
|
|
|
|
this.events = options.events;
|
|
|
|
this.logger = options.logger;
|
|
|
|
this.normalizeInput = options.normalizeInput;
|
|
|
|
this.blockchainConfig = options.blockchainConfig;
|
|
|
|
this.locale = options.locale;
|
2018-05-23 15:52:07 +00:00
|
|
|
this.isDev = options.isDev;
|
2018-05-22 21:34:54 +00:00
|
|
|
}
|
|
|
|
|
2018-05-23 15:06:58 +00:00
|
|
|
processEnded(code) {
|
2018-05-28 15:54:31 +00:00
|
|
|
this.logger.error(__('Blockchain process ended before the end of this process. Code: %s', code));
|
2018-05-23 15:06:58 +00:00
|
|
|
}
|
|
|
|
|
2018-05-22 21:34:54 +00:00
|
|
|
startBlockchainNode() {
|
2018-05-28 15:54:31 +00:00
|
|
|
this.logger.info(__('Starting Blockchain node in another process').cyan);
|
2018-05-22 21:34:54 +00:00
|
|
|
|
|
|
|
this.blockchainProcess = new ProcessLauncher({
|
|
|
|
modulePath: utils.joinPath(__dirname, '../cmds/blockchain/blockchainProcess.js'),
|
|
|
|
logger: this.logger,
|
|
|
|
events: this.events,
|
2018-05-25 03:42:18 +00:00
|
|
|
silent: this.logger.logLevel !== 'trace',
|
2018-05-23 15:06:58 +00:00
|
|
|
exitCallback: this.processEnded.bind(this)
|
2018-05-22 21:34:54 +00:00
|
|
|
});
|
|
|
|
this.blockchainProcess.send({
|
|
|
|
action: constants.blockchain.init, options: {
|
|
|
|
blockchainConfig: this.blockchainConfig,
|
|
|
|
//client: this.client,
|
|
|
|
// TODO: assume for now it's geth
|
|
|
|
client: 'geth',
|
|
|
|
env: this.env,
|
2018-05-23 15:52:07 +00:00
|
|
|
isDev: this.isDev,
|
2018-05-22 21:34:54 +00:00
|
|
|
locale: this.locale
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
this.blockchainProcess.once('result', constants.blockchain.blockchainReady, () => {
|
2018-05-28 15:54:31 +00:00
|
|
|
this.logger.info(__('Blockchain node is ready').cyan);
|
2018-05-23 12:40:09 +00:00
|
|
|
this.events.emit(constants.blockchain.blockchainReady);
|
2018-05-22 21:34:54 +00:00
|
|
|
});
|
2018-05-30 14:52:15 +00:00
|
|
|
|
|
|
|
this.events.on('exit', () => {
|
|
|
|
this.blockchainProcess.send('exit');
|
|
|
|
});
|
2018-05-22 21:34:54 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2018-05-23 12:40:09 +00:00
|
|
|
module.exports = BlockchainProcessLauncher;
|