package baseapp import ( "fmt" "io" dbm "github.com/tendermint/tm-db" "github.com/cosmos/cosmos-sdk/snapshots" "github.com/cosmos/cosmos-sdk/store" sdk "github.com/cosmos/cosmos-sdk/types" ) // File for storing in-package BaseApp optional functions, // for options that need access to non-exported fields of the BaseApp // SetPruning sets a pruning option on the multistore associated with the app func SetPruning(opts sdk.PruningOptions) func(*BaseApp) { return func(bap *BaseApp) { bap.cms.SetPruning(opts) } } // SetMinGasPrices returns an option that sets the minimum gas prices on the app. func SetMinGasPrices(gasPricesStr string) func(*BaseApp) { gasPrices, err := sdk.ParseDecCoins(gasPricesStr) if err != nil { panic(fmt.Sprintf("invalid minimum gas prices: %v", err)) } return func(bap *BaseApp) { bap.setMinGasPrices(gasPrices) } } // SetHaltHeight returns a BaseApp option function that sets the halt block height. func SetHaltHeight(blockHeight uint64) func(*BaseApp) { return func(bap *BaseApp) { bap.setHaltHeight(blockHeight) } } // SetHaltTime returns a BaseApp option function that sets the halt block time. func SetHaltTime(haltTime uint64) func(*BaseApp) { return func(bap *BaseApp) { bap.setHaltTime(haltTime) } } // SetTrace will turn on or off trace flag func SetTrace(trace bool) func(*BaseApp) { return func(app *BaseApp) { app.setTrace(trace) } } // SetIndexEvents provides a BaseApp option function that sets the events to index. func SetIndexEvents(ie []string) func(*BaseApp) { return func(app *BaseApp) { app.setIndexEvents(ie) } } // SetInterBlockCache provides a BaseApp option function that sets the // inter-block cache. func SetInterBlockCache(cache sdk.MultiStorePersistentCache) func(*BaseApp) { return func(app *BaseApp) { app.setInterBlockCache(cache) } } // SetSnapshotInterval sets the snapshot interval. func SetSnapshotInterval(interval uint64) func(*BaseApp) { return func(app *BaseApp) { app.SetSnapshotInterval(interval) } } // SetSnapshotKeepRecent sets the recent snapshots to keep. func SetSnapshotKeepRecent(keepRecent uint32) func(*BaseApp) { return func(app *BaseApp) { app.SetSnapshotKeepRecent(keepRecent) } } // SetSnapshotStore sets the snapshot store. func SetSnapshotStore(snapshotStore *snapshots.Store) func(*BaseApp) { return func(app *BaseApp) { app.SetSnapshotStore(snapshotStore) } } func (app *BaseApp) SetName(name string) { if app.sealed { panic("SetName() on sealed BaseApp") } app.name = name } // SetParamStore sets a parameter store on the BaseApp. func (app *BaseApp) SetParamStore(ps ParamStore) { if app.sealed { panic("SetParamStore() on sealed BaseApp") } app.paramStore = ps } // SetAppVersion sets the application's version string. func (app *BaseApp) SetAppVersion(v string) { if app.sealed { panic("SetAppVersion() on sealed BaseApp") } app.appVersion = v } func (app *BaseApp) SetDB(db dbm.DB) { if app.sealed { panic("SetDB() on sealed BaseApp") } app.db = db } func (app *BaseApp) SetCMS(cms store.CommitMultiStore) { if app.sealed { panic("SetEndBlocker() on sealed BaseApp") } app.cms = cms } func (app *BaseApp) SetInitChainer(initChainer sdk.InitChainer) { if app.sealed { panic("SetInitChainer() on sealed BaseApp") } app.initChainer = initChainer } func (app *BaseApp) SetBeginBlocker(beginBlocker sdk.BeginBlocker) { if app.sealed { panic("SetBeginBlocker() on sealed BaseApp") } app.beginBlocker = beginBlocker } func (app *BaseApp) SetEndBlocker(endBlocker sdk.EndBlocker) { if app.sealed { panic("SetEndBlocker() on sealed BaseApp") } app.endBlocker = endBlocker } func (app *BaseApp) SetAnteHandler(ah sdk.AnteHandler) { if app.sealed { panic("SetAnteHandler() on sealed BaseApp") } app.anteHandler = ah } func (app *BaseApp) SetAddrPeerFilter(pf sdk.PeerFilter) { if app.sealed { panic("SetAddrPeerFilter() on sealed BaseApp") } app.addrPeerFilter = pf } func (app *BaseApp) SetIDPeerFilter(pf sdk.PeerFilter) { if app.sealed { panic("SetIDPeerFilter() on sealed BaseApp") } app.idPeerFilter = pf } func (app *BaseApp) SetFauxMerkleMode() { if app.sealed { panic("SetFauxMerkleMode() on sealed BaseApp") } app.fauxMerkleMode = true } // SetCommitMultiStoreTracer sets the store tracer on the BaseApp's underlying // CommitMultiStore. func (app *BaseApp) SetCommitMultiStoreTracer(w io.Writer) { app.cms.SetTracer(w) } // SetStoreLoader allows us to customize the rootMultiStore initialization. func (app *BaseApp) SetStoreLoader(loader StoreLoader) { if app.sealed { panic("SetStoreLoader() on sealed BaseApp") } app.storeLoader = loader } // SetRouter allows us to customize the router. func (app *BaseApp) SetRouter(router sdk.Router) { if app.sealed { panic("SetRouter() on sealed BaseApp") } app.router = router } // SetSnapshotStore sets the snapshot store. func (app *BaseApp) SetSnapshotStore(snapshotStore *snapshots.Store) { if app.sealed { panic("SetSnapshotStore() on sealed BaseApp") } app.snapshotManager = snapshots.NewManager(snapshotStore, app.cms) } // SetSnapshotInterval sets the snapshot interval. func (app *BaseApp) SetSnapshotInterval(snapshotInterval uint64) { if app.sealed { panic("SetSnapshotInterval() on sealed BaseApp") } app.snapshotInterval = snapshotInterval } // SetSnapshotKeepRecent sets the number of recent snapshots to keep. func (app *BaseApp) SetSnapshotKeepRecent(snapshotKeepRecent uint32) { if app.sealed { panic("SetSnapshotKeepRecent() on sealed BaseApp") } app.snapshotKeepRecent = snapshotKeepRecent }