func main() { runtime.GOMAXPROCS(runtime.NumCPU()) // This is a bit of a cheat, but ey! os.Setenv("QTWEBKIT_INSPECTOR_SERVER", "127.0.0.1:99999") //qml.Init(nil) qml.Run(run) var interrupted = false utils.RegisterInterrupt(func(os.Signal) { interrupted = true }) utils.HandleInterrupt() // we need to run the interrupt callbacks in case gui is closed // this skips if we got here by actual interrupt stopping the GUI if !interrupted { utils.RunInterruptCallbacks(os.Interrupt) } // this blocks the thread ethereum.WaitForShutdown() ethlog.Flush() }
func StartEthereum(ethereum *eth.Ethereum, UseSeed bool) { logger.Infof("Starting %s", ethereum.ClientIdentity()) ethereum.Start(UseSeed) RegisterInterrupt(func(sig os.Signal) { ethereum.Stop() ethlog.Flush() }) }
func main() { // Leave QT on top at ALL times. Qt Needs to be initialized from the main thread qml.Init(nil) runtime.GOMAXPROCS(runtime.NumCPU()) var interrupted = false utils.RegisterInterrupt(func(os.Signal) { interrupted = true }) utils.HandleInterrupt() // precedence: code-internal flag default < config file < environment variables < command line Init() // parsing command line config := utils.InitConfig(ConfigFile, Datadir, "ETH") utils.InitDataDir(Datadir) utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile) db := utils.NewDatabase() keyManager := utils.NewKeyManager(KeyStore, Datadir, db) // create, import, export keys utils.KeyTasks(keyManager, KeyRing, GenAddr, SecretFile, ExportDir, NonInteractive) clientIdentity := utils.NewClientIdentity(ClientIdentifier, Version, Identifier) ethereum := utils.NewEthereum(db, clientIdentity, keyManager, UseUPnP, OutboundPort, MaxPeer) if ShowGenesis { utils.ShowGenesis(ethereum) } if StartRpc { utils.StartRpc(ethereum, RpcPort) } gui := NewWindow(ethereum, config, clientIdentity, KeyRing, LogLevel) utils.RegisterInterrupt(func(os.Signal) { gui.Stop() }) utils.StartEthereum(ethereum, UseSeed) // gui blocks the main thread gui.Start(AssetPath) // we need to run the interrupt callbacks in case gui is closed // this skips if we got here by actual interrupt stopping the GUI if !interrupted { utils.RunInterruptCallbacks(os.Interrupt) } // this blocks the thread ethereum.WaitForShutdown() ethlog.Flush() }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) utils.HandleInterrupt() // precedence: code-internal flag default < config file < environment variables < command line Init() // parsing command line // If the difftool option is selected ignore all other log output if DiffTool { LogLevel = 0 } utils.InitConfig(ConfigFile, Datadir, "ETH") ethutil.Config.Diff = DiffTool ethutil.Config.DiffType = DiffType utils.InitDataDir(Datadir) utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile) db := utils.NewDatabase() keyManager := utils.NewKeyManager(KeyStore, Datadir, db) // create, import, export keys utils.KeyTasks(keyManager, KeyRing, GenAddr, SecretFile, ExportDir, NonInteractive) clientIdentity := utils.NewClientIdentity(ClientIdentifier, Version, Identifier) ethereum := utils.NewEthereum(db, clientIdentity, keyManager, UseUPnP, OutboundPort, MaxPeer) if ShowGenesis { utils.ShowGenesis(ethereum) } if StartMining { utils.StartMining(ethereum) } // better reworked as cases if StartJsConsole { InitJsConsole(ethereum) } else if len(InputFile) > 0 { ExecJsFile(ethereum, InputFile) } if StartRpc { utils.StartRpc(ethereum, RpcPort) } utils.StartEthereum(ethereum, UseSeed) // this blocks the thread ethereum.WaitForShutdown() ethlog.Flush() }
func exit(err error) { status := 0 if err != nil { fmt.Println(err) logger.Errorln("Fatal: ", err) status = 1 } ethlog.Flush() os.Exit(status) }
func main() { runtime.GOMAXPROCS(runtime.NumCPU()) utils.HandleInterrupt() // precedence: code-internal flag default < config file < environment variables < command line Init() // parsing command line // If the difftool option is selected ignore all other log output if DiffTool || Dump { LogLevel = 0 } utils.InitConfig(ConfigFile, Datadir, "ETH") ethutil.Config.Diff = DiffTool ethutil.Config.DiffType = DiffType utils.InitDataDir(Datadir) utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile) db := utils.NewDatabase() keyManager := utils.NewKeyManager(KeyStore, Datadir, db) // create, import, export keys utils.KeyTasks(keyManager, KeyRing, GenAddr, SecretFile, ExportDir, NonInteractive) clientIdentity := utils.NewClientIdentity(ClientIdentifier, Version, Identifier) ethereum := utils.NewEthereum(db, clientIdentity, keyManager, UseUPnP, OutboundPort, MaxPeer) if Dump { var block *ethchain.Block if len(DumpHash) == 0 && DumpNumber == -1 { block = ethereum.BlockChain().CurrentBlock } else if len(DumpHash) > 0 { block = ethereum.BlockChain().GetBlock(ethutil.Hex2Bytes(DumpHash)) } else { block = ethereum.BlockChain().GetBlockByNumber(uint64(DumpNumber)) } if block == nil { fmt.Fprintln(os.Stderr, "block not found") // We want to output valid JSON fmt.Println("{}") os.Exit(1) } // Leave the Println. This needs clean output for piping fmt.Printf("%s\n", block.State().Dump()) os.Exit(0) } if ShowGenesis { utils.ShowGenesis(ethereum) } if StartMining { utils.StartMining(ethereum) } // better reworked as cases if StartJsConsole { InitJsConsole(ethereum) } else if len(InputFile) > 0 { ExecJsFile(ethereum, InputFile) } if StartRpc { utils.StartRpc(ethereum, RpcPort) } utils.StartEthereum(ethereum, UseSeed) // this blocks the thread ethereum.WaitForShutdown() ethlog.Flush() }