proper integration of tick functionality
This commit is contained in:
parent
20e1b92ad4
commit
6eb884017b
23
app/app.go
23
app/app.go
|
@ -28,12 +28,16 @@ type Basecoin struct {
|
|||
state *Store
|
||||
|
||||
handler sdk.Handler
|
||||
tick Ticker
|
||||
|
||||
pending []*abci.Validator
|
||||
height uint64
|
||||
logger log.Logger
|
||||
}
|
||||
|
||||
// Ticker - tick function
|
||||
type Ticker func(sm.SimpleDB) ([]*abci.Validator, error)
|
||||
|
||||
var _ abci.Application = &Basecoin{}
|
||||
|
||||
// NewBasecoin - create a new instance of the basecoin application
|
||||
|
@ -46,6 +50,17 @@ func NewBasecoin(handler sdk.Handler, store *Store, logger log.Logger) *Basecoin
|
|||
}
|
||||
}
|
||||
|
||||
// NewBasecoinTick - create a new instance of the basecoin application with tick functionality
|
||||
func NewBasecoinTick(handler sdk.Handler, store *Store, logger log.Logger, tick Ticker) *Basecoin {
|
||||
return &Basecoin{
|
||||
handler: handler,
|
||||
info: sm.NewChainState(),
|
||||
state: store,
|
||||
logger: logger,
|
||||
tick: tick,
|
||||
}
|
||||
}
|
||||
|
||||
// GetChainID returns the currently stored chain
|
||||
func (app *Basecoin) GetChainID() string {
|
||||
return app.info.GetChainID(app.state.Committed())
|
||||
|
@ -170,6 +185,14 @@ func (app *Basecoin) BeginBlock(req abci.RequestBeginBlock) {
|
|||
// for _, plugin := range app.plugins.GetList() {
|
||||
// plugin.BeginBlock(app.state, hash, header)
|
||||
// }
|
||||
|
||||
if app.tick != nil {
|
||||
diff, err := app.tick(app.state.Append())
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
app.addValChange(diff)
|
||||
}
|
||||
}
|
||||
|
||||
// EndBlock - ABCI
|
||||
|
|
|
@ -9,8 +9,8 @@ import (
|
|||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk"
|
||||
"github.com/tendermint/abci/server"
|
||||
abci "github.com/tendermint/abci/types"
|
||||
"github.com/tendermint/tmlibs/cli"
|
||||
cmn "github.com/tendermint/tmlibs/common"
|
||||
|
||||
|
@ -19,6 +19,7 @@ import (
|
|||
"github.com/tendermint/tendermint/proxy"
|
||||
"github.com/tendermint/tendermint/types"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk"
|
||||
"github.com/cosmos/cosmos-sdk/app"
|
||||
)
|
||||
|
||||
|
@ -29,6 +30,15 @@ var StartCmd = &cobra.Command{
|
|||
RunE: startCmd,
|
||||
}
|
||||
|
||||
// TickStartCmd - command to create a start command with tick
|
||||
func TickStartCmd(tick app.Ticker) *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "start",
|
||||
Short: "Start this full node",
|
||||
RunE: tickStartCmd(tick),
|
||||
}
|
||||
}
|
||||
|
||||
// nolint TODO: move to config file
|
||||
const EyesCacheSize = 10000
|
||||
|
||||
|
@ -52,7 +62,9 @@ func init() {
|
|||
tcmd.AddNodeFlags(StartCmd)
|
||||
}
|
||||
|
||||
func startCmd(cmd *cobra.Command, args []string) error {
|
||||
//returns the start command which uses the tick
|
||||
func tickStartCmd(tick app.Ticker) func(cmd *cobra.Command, args []string) error {
|
||||
return func(cmd *cobra.Command, args []string) error {
|
||||
rootDir := viper.GetString(cli.HomeFlag)
|
||||
|
||||
store, err := app.NewStore(
|
||||
|
@ -64,8 +76,29 @@ func startCmd(cmd *cobra.Command, args []string) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Create Basecoin app
|
||||
basecoinApp := app.NewBasecoinTick(Handler, store, logger.With("module", "app"), tick)
|
||||
return start(rootDir, store, basecoinApp)
|
||||
}
|
||||
}
|
||||
|
||||
func startCmd(cmd *cobra.Command, args []string) error {
|
||||
rootDir := viper.GetString(cli.HomeFlag)
|
||||
|
||||
store, err := app.NewStore(
|
||||
path.Join(rootDir, "data", "merkleeyes.db"),
|
||||
EyesCacheSize,
|
||||
logger.With("module", "store"),
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// Create Basecoin app
|
||||
basecoinApp := app.NewBasecoin(Handler, store, logger.With("module", "app"))
|
||||
return start(rootDir, store, basecoinApp)
|
||||
}
|
||||
|
||||
func start(rootDir string, store *app.Store, basecoinApp *app.Basecoin) error {
|
||||
|
||||
// if chain_id has not been set yet, load the genesis.
|
||||
// else, assume it's been loaded
|
||||
|
@ -93,7 +126,7 @@ func startCmd(cmd *cobra.Command, args []string) error {
|
|||
return startTendermint(rootDir, basecoinApp)
|
||||
}
|
||||
|
||||
func startBasecoinABCI(basecoinApp *app.Basecoin) error {
|
||||
func startBasecoinABCI(basecoinApp abci.Application) error {
|
||||
// Start the ABCI listener
|
||||
addr := viper.GetString(FlagAddress)
|
||||
svr, err := server.NewServer(addr, "socket", basecoinApp)
|
||||
|
@ -111,7 +144,7 @@ func startBasecoinABCI(basecoinApp *app.Basecoin) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func startTendermint(dir string, basecoinApp *app.Basecoin) error {
|
||||
func startTendermint(dir string, basecoinApp abci.Application) error {
|
||||
cfg, err := tcmd.ParseConfig()
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue