X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=main.js;h=c1dc180699ca541594661117279f1c35a74ddc15;hb=bcccd0c2aff77d5fc73c8c6ed3fef2d415679604;hp=b2eb3fda6cb54c3e38885e2ebacff233c5c304bb;hpb=f5ebe1b5a4117594076954c1329c2cceea320a80;p=bytom%2Fbytom-electron.git diff --git a/main.js b/main.js index b2eb3fd..c1dc180 100644 --- a/main.js +++ b/main.js @@ -1,19 +1,26 @@ +require('babel-register') +require('events').EventEmitter.defaultMaxListeners = 100 const {app, BrowserWindow, ipcMain, shell} = require('electron') const spawn = require('child_process').spawn const glob = require('glob') const url = require('url') const path = require('path') const fs = require('fs') -const logger = require('./main-process/logger') +const logger = require('./modules/logger') const log = logger.create('main') const bytomdLog = logger.create('bytomd') +const Settings = require('./modules/settings') -let win, bytomdInit, bytomdMining +const tcpPortUsed = require('tcp-port-used'); + +let win, bytomdInit, bytomdNode global.fileExist = false global.mining = {isMining: false} let startnode = false +Settings.init() + function initialize () { function createWindow() { @@ -25,7 +32,7 @@ function initialize () { height: 768, 'webPreferences': { 'webSecurity': !process.env.DEV_URL, - 'preload': path.join(__dirname, '/main-process/preload.js') + 'preload': path.join(__dirname, '/modules/preload.js') }, icon: icon_path }) @@ -88,66 +95,53 @@ function initialize () { bytomdInit.kill('SIGINT') log.info('Kill bytomd Init command...') } - if(bytomdMining){ - bytomdMining.kill('SIGINT') + if(bytomdNode){ + bytomdNode.kill('SIGINT') const killTimeout = setTimeout(() => { - bytomdMining.kill('SIGKILL') + bytomdNode.kill('SIGKILL') }, 8000 /* 8 seconds */) - bytomdMining.once('close', () => { + bytomdNode.once('close', () => { clearTimeout(killTimeout) - bytomdMining = null + bytomdNode = null }) log.info('Kill bytomd Mining command...') } }) } -const bytomdPath = process.env.DEV? - path.join(__dirname, '/bytomd/bytomd-darwin_amd64'): - glob.sync( path.join(__dirname, '../bytomd/bytomd*')) - -let bytomdDataPath -switch (process.platform){ - case 'win32': - bytomdDataPath = `${app.getPath('appData')}/Bytom` - break - case 'darwin': - bytomdDataPath = `${app.getPath('home')}/Library/Bytom` - break - case 'linux': - bytomdDataPath = `${app.getPath('home')}/.bytom` -} -function setBytomMining(event) { - bytomdMining = spawn( `${bytomdPath}`, ['node', '--web.closed'] ) +function setBytomNode(event) { + bytomdNode = spawn( `${Settings.bytomdPath}`, ['node', '--web.closed'] ) - bytomdMining.stdout.on('data', function(data) { - bytomdLog.info(`bytomd mining: ${data}`) + bytomdNode.stdout.on('data', function(data) { + bytomdLog.info(`bytomd node: ${data}`) }) - bytomdMining.stderr.on('data', function(data) { - bytomdLog.info(`bytomd mining: ${data}`) - if(data.includes('msg="Start node')) { - if(event){ + bytomdNode.stderr.on('data', function(data) { + bytomdNode.on('exit', function (code) { + bytomdLog.info('bytom Node exited with code ' + code) + app.quit() + }) + }) + + tcpPortUsed.waitUntilUsed(9888, 500, 20000) + .then(function() { + if (event) { event.sender.send('ConfiguredNetwork', 'startNode') } else { startnode = true win.webContents.send('ConfiguredNetwork', 'startNode') } - } - }) - - bytomdMining.on('exit', function (code) { - bytomdLog.info('bytom Mining exited with code ' + code) - app.quit() - }) + }, function(err) { + bytomdLog.info('Error:', err.message); + }); } function setBytomInit(event, bytomNetwork) { // Init bytomd - bytomdInit = spawn(`${bytomdPath}`, ['init', '--chain_id', `${bytomNetwork}`] ) + bytomdInit = spawn(`${Settings.bytomdPath}`, ['init', '--chain_id', `${bytomNetwork}`] ) bytomdInit.stdout.on('data', function(data) { bytomdLog.info(`bytomd init: ${data}`) @@ -159,7 +153,7 @@ function setBytomInit(event, bytomNetwork) { bytomdInit.on('exit', function (code) { event.sender.send('ConfiguredNetwork','init') - setBytomMining(event) + setBytomNode(event) bytomdLog.info('bytom init exited with code ' + code) }) @@ -169,11 +163,11 @@ function setBytomInit(event, bytomNetwork) { } function bytomd(){ - const filePath = path.join(`${bytomdDataPath}/config.toml`) + const filePath = path.join(`${Settings.bytomdDataPath}/config.toml`) if (fs.existsSync(filePath)) { log.info('Bytomd Network has been inited') global.fileExist = true - setBytomMining() + setBytomNode() }else { log.info('Init Bytomd Network...') ipcMain.on('bytomdInitNetwork', (event, arg) => { @@ -184,7 +178,7 @@ function bytomd(){ // Require each JS file in the main-process dir function loadMenu () { - const files = glob.sync(path.join(__dirname, 'main-process/menus/*.js')) + const files = glob.sync(path.join(__dirname, 'modules/menus/*.js')) files.forEach((file) => { require(file) }) } @@ -194,6 +188,7 @@ function setupConfigure(){ logger.setup(loggerOptions) } + // Handle Squirrel on Windows startup events switch (process.argv[1]) { case '--squirrel-install':