Merge pull request #3 from ethereum/develop

Develop
This commit is contained in:
BuildFuture 2014-08-22 15:07:35 +00:00
commit 43bcb2d88b
6 changed files with 72 additions and 8 deletions

View file

@ -7,7 +7,7 @@ Status](http://cpt-obvious.ethercasts.com:8010/buildstatusimage?builder=go-ether
Ethereum Go Client © 2014 Jeffrey Wilcke.
Current state: Proof of Concept 0.6.4.
Current state: Proof of Concept 0.6.5.
For the development package please see the [eth-go package](https://github.com/ethereum/eth-go).

36
ethereal/errors.go Normal file
View file

@ -0,0 +1,36 @@
package main
import (
"fmt"
"os"
"gopkg.in/qml.v1"
)
func ErrorWindow(err error) {
engine := qml.NewEngine()
component, e := engine.LoadString("local", qmlErr)
if e != nil {
fmt.Println("err:", err)
os.Exit(1)
}
win := component.CreateWindow(nil)
win.Root().ObjectByName("label").Set("text", err.Error())
win.Show()
win.Wait()
}
const qmlErr = `
import QtQuick 2.0; import QtQuick.Controls 1.0;
ApplicationWindow {
width: 600; height: 150;
flags: Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowCloseButtonHint
title: "Error"
Text {
x: parent.width / 2 - this.width / 2;
y: parent.height / 2 - this.height / 2;
objectName: "label";
}
}
`

View file

@ -57,6 +57,7 @@ type Gui struct {
plugins map[string]plugin
miner *ethminer.Miner
stdLog ethlog.LogSystem
}
// Create GUI, but doesn't start it
@ -559,6 +560,7 @@ func (gui *Gui) ToggleTurboMining() {
// functions that allow Gui to implement interface ethlog.LogSystem
func (gui *Gui) SetLogLevel(level ethlog.LogLevel) {
gui.logLevel = level
gui.stdLog.SetLogLevel(level)
gui.config.Save("loglevel", level)
}

View file

@ -12,7 +12,7 @@ import (
const (
ClientIdentifier = "Ethereal"
Version = "0.6.4"
Version = "0.6.5"
)
var ethereum *eth.Ethereum
@ -25,9 +25,15 @@ func run() error {
utils.InitDataDir(Datadir)
utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile)
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)
@ -47,6 +53,7 @@ func run() error {
}
gui := NewWindow(ethereum, config, clientIdentity, KeyRing, LogLevel)
gui.stdLog = stdLog
utils.RegisterInterrupt(func(os.Signal) {
gui.Stop()

View file

@ -13,7 +13,7 @@ import (
const (
ClientIdentifier = "Ethereum(G)"
Version = "0.6.4"
Version = "0.6.5"
)
var logger = ethlog.NewLogger("CLI")
@ -40,6 +40,12 @@ func main() {
utils.InitLogging(Datadir, LogFile, LogLevel, DebugFile)
db := utils.NewDatabase()
err := utils.DBSanityCheck(db)
if err != nil {
logger.Errorln(err)
os.Exit(1)
}
keyManager := utils.NewKeyManager(KeyStore, Datadir, db)

View file

@ -80,6 +80,16 @@ func confirm(message string) bool {
return r == "y"
}
func DBSanityCheck(db ethutil.Database) error {
d, _ := db.Get([]byte("ProtocolVersion"))
protov := ethutil.NewValue(d).Uint()
if protov != eth.ProtocolVersion && protov != 0 {
return fmt.Errorf("Database version mismatch. Protocol(%d / %d). `rm -rf %s`", protov, eth.ProtocolVersion, ethutil.Config.ExecPath+"/database")
}
return nil
}
func InitDataDir(Datadir string) {
_, err := os.Stat(Datadir)
if err != nil {
@ -90,18 +100,22 @@ func InitDataDir(Datadir string) {
}
}
func InitLogging(Datadir string, LogFile string, LogLevel int, DebugFile string) {
func InitLogging(Datadir string, LogFile string, LogLevel int, DebugFile string) ethlog.LogSystem {
var writer io.Writer
if LogFile == "" {
writer = os.Stdout
} else {
writer = openLogFile(Datadir, LogFile)
}
ethlog.AddLogSystem(ethlog.NewStdLogSystem(writer, log.LstdFlags, ethlog.LogLevel(LogLevel)))
sys := ethlog.NewStdLogSystem(writer, log.LstdFlags, ethlog.LogLevel(LogLevel))
ethlog.AddLogSystem(sys)
if DebugFile != "" {
writer = openLogFile(Datadir, DebugFile)
ethlog.AddLogSystem(ethlog.NewStdLogSystem(writer, log.LstdFlags, ethlog.DebugLevel))
}
return sys
}
func InitConfig(ConfigFile string, Datadir string, EnvPrefix string) *ethutil.ConfigManager {
@ -112,7 +126,6 @@ func InitConfig(ConfigFile string, Datadir string, EnvPrefix string) *ethutil.Co
func exit(err error) {
status := 0
if err != nil {
fmt.Println(err)
logger.Errorln("Fatal: ", err)
status = 1
}