embark/lib/processes/blockchainProcessLauncher.js

51 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-05-22 21:34:54 +00:00
const ProcessLauncher = require('../process/processLauncher');
const utils = require('../utils/utils.js');
const constants = require('../constants');
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
}
processEnded(code) {
this.logger.error('Blockchain process ended before the end of this process. Code: ' + code);
}
2018-05-22 21:34:54 +00:00
startBlockchainNode() {
this.logger.info('Starting Blockchain node in another process'.cyan);
this.blockchainProcess = new ProcessLauncher({
modulePath: utils.joinPath(__dirname, '../cmds/blockchain/blockchainProcess.js'),
logger: this.logger,
events: this.events,
silent: this.logger.logLevel !== 'trace',
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, () => {
this.logger.info('Blockchain node is ready'.cyan);
this.events.emit(constants.blockchain.blockchainReady);
2018-05-22 21:34:54 +00:00
});
}
}
module.exports = BlockchainProcessLauncher;