55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/urfave/cli"
|
|
|
|
"github.com/tendermint/abci/server"
|
|
"github.com/tendermint/basecoin/app"
|
|
cmn "github.com/tendermint/go-common"
|
|
eyes "github.com/tendermint/merkleeyes/client"
|
|
)
|
|
|
|
const EyesCacheSize = 10000
|
|
|
|
func cmdStart(c *cli.Context) error {
|
|
|
|
// Connect to MerkleEyes
|
|
var eyesCli *eyes.Client
|
|
if c.String("eyes") == "local" {
|
|
eyesCli = eyes.NewLocalClient(c.String("eyes-db"), EyesCacheSize)
|
|
} else {
|
|
var err error
|
|
eyesCli, err = eyes.NewClient(c.String("eyes"))
|
|
if err != nil {
|
|
return errors.New("connect to MerkleEyes: " + err.Error())
|
|
}
|
|
}
|
|
|
|
// Create Basecoin app
|
|
app := app.NewBasecoin(eyesCli)
|
|
|
|
// If genesis file was specified, set key-value options
|
|
if c.String("genesis") != "" {
|
|
err := app.LoadGenesis(c.String("genesis"))
|
|
if err != nil {
|
|
return errors.New(cmn.Fmt("%+v", err))
|
|
}
|
|
}
|
|
|
|
// Start the listener
|
|
svr, err := server.NewServer(c.String("address"), "socket", app)
|
|
if err != nil {
|
|
return errors.New("create listener: " + err.Error())
|
|
}
|
|
|
|
// Wait forever
|
|
cmn.TrapSignal(func() {
|
|
// Cleanup
|
|
svr.Stop()
|
|
})
|
|
|
|
return nil
|
|
}
|