diff options
author | obscuren <geffobscura@gmail.com> | 2014-09-19 19:33:15 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-09-19 19:34:37 +0800 |
commit | ae1de6593c31fbaa4429588cea2702dd5b01a722 (patch) | |
tree | d19c960d08524f0c5449ba87ab7ef4054b782b32 /mist/main.go | |
parent | 723074e71bbe1638a5cec9b996b1eed07a76fd72 (diff) | |
download | go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar.gz go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar.bz2 go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar.lz go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar.xz go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.tar.zst go-tangerine-ae1de6593c31fbaa4429588cea2702dd5b01a722.zip |
renamed
Diffstat (limited to 'mist/main.go')
-rw-r--r-- | mist/main.go | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/mist/main.go b/mist/main.go new file mode 100644 index 000000000..6e4554352 --- /dev/null +++ b/mist/main.go @@ -0,0 +1,91 @@ +package main + +import ( + "os" + "runtime" + + "github.com/ethereum/eth-go" + "github.com/ethereum/eth-go/ethlog" + "github.com/ethereum/go-ethereum/utils" + "gopkg.in/qml.v1" +) + +const ( + ClientIdentifier = "Mist" + Version = "0.6.7" +) + +var ethereum *eth.Ethereum + +func run() error { + // precedence: code-internal flag default < config file < environment variables < command line + Init() // parsing command line + + config := utils.InitConfig(ConfigFile, Datadir, "ETH") + + utils.InitDataDir(Datadir) + + stdLog := utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile) + + db := utils.NewDatabase() + err := utils.DBSanityCheck(db) + if err != nil { + ErrorWindow(err) + + os.Exit(1) + } + + 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) + gui.stdLog = stdLog + + utils.RegisterInterrupt(func(os.Signal) { + gui.Stop() + }) + utils.StartEthereum(ethereum, UseSeed) + // gui blocks the main thread + gui.Start(AssetPath) + + return nil +} + +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.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() +} |