diff options
author | Maran <maran.hidskes@gmail.com> | 2014-07-01 21:26:18 +0800 |
---|---|---|
committer | Maran <maran.hidskes@gmail.com> | 2014-07-01 21:26:18 +0800 |
commit | d294dedfad754fdb6afca22e3bb116e3d07febcd (patch) | |
tree | e6ef5a00d4efbaece23878984ca7a62942a43190 /ethereal/main.go | |
parent | e798294a4b2049dc59df6ad4a3bc67c00916cb9f (diff) | |
parent | 114e715e3c9a547da28b385b85fa69514ae40636 (diff) | |
download | go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar.gz go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar.bz2 go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar.lz go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar.xz go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.tar.zst go-tangerine-d294dedfad754fdb6afca22e3bb116e3d07febcd.zip |
Merge branch 'develop' of github.com:ethereum/eth-go into develop
Diffstat (limited to 'ethereal/main.go')
-rw-r--r-- | ethereal/main.go | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/ethereal/main.go b/ethereal/main.go new file mode 100644 index 000000000..82427f088 --- /dev/null +++ b/ethereal/main.go @@ -0,0 +1,66 @@ +package main + +import ( + "github.com/ethereum/eth-go/ethlog" + "github.com/ethereum/go-ethereum/ethereal/ui" + "github.com/ethereum/go-ethereum/utils" + "github.com/go-qml/qml" + "os" + "runtime" +) + +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 + utils.InitConfig(ConfigFile, Datadir, Identifier, "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) + + ethereum := utils.NewEthereum(db, keyManager, UseUPnP, OutboundPort, MaxPeer) + + if ShowGenesis { + utils.ShowGenesis(ethereum) + } + + if StartRpc { + utils.StartRpc(ethereum, RpcPort) + } + + gui := ethui.New(ethereum, 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() +} |