func run(ctx *cli.Context) { utils.HandleInterrupt() cfg := utils.MakeEthConfig(ClientIdentifier, nodeNameVersion, ctx) ethereum, err := eth.New(cfg) if err != nil { utils.Fatalf("%v", err) } startEth(ctx, ethereum) // this blocks the thread ethereum.WaitForShutdown() }
func run(ctx *cli.Context) { importer := NewImporter(ctx) utils.HandleInterrupt() cfg := utils.MakeEthConfig("EthChainParser", Version, ctx) ethereum, err := eth.New(cfg) if err != nil { utils.Fatalf("%v", err) } utils.StartEthereum(ethereum) if ctx.GlobalBool(utils.RPCEnabledFlag.Name) { utils.StartRPC(ethereum, ctx) } events := ethereum.EventMux().Subscribe( core.ChainEvent{}, core.TxPreEvent{}, ) defer events.Unsubscribe() for { select { case ev, isopen := <-events.Chan(): if !isopen { return } switch ev := ev.(type) { case core.ChainEvent: importer.importBlock(ev.Block) case core.TxPreEvent: // Not dealing with incoming txes for now //importer.importTx(ev.Tx) } } } ethereum.WaitForShutdown() logger.Flush() fmt.Printf("Shutting down\n") }
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") var interrupted = false utils.RegisterInterrupt(func(os.Signal) { interrupted = true }) utils.HandleInterrupt() if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, "Error: ", err) } // 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) } logger.Flush() }