Add baseapp.CheckFull
This commit is contained in:
parent
1c4ed7b833
commit
da5fe2ef13
|
@ -314,7 +314,7 @@ func (app *BaseApp) CheckTx(txBytes []byte) (res abci.ResponseCheckTx) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
result = err.Result()
|
result = err.Result()
|
||||||
} else {
|
} else {
|
||||||
result = app.runTx(true, txBytes, tx)
|
result = app.runTx(true, false, txBytes, tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
return abci.ResponseCheckTx{
|
return abci.ResponseCheckTx{
|
||||||
|
@ -339,7 +339,7 @@ func (app *BaseApp) DeliverTx(txBytes []byte) (res abci.ResponseDeliverTx) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
result = err.Result()
|
result = err.Result()
|
||||||
} else {
|
} else {
|
||||||
result = app.runTx(false, txBytes, tx)
|
result = app.runTx(false, false, txBytes, tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// After-handler hooks.
|
// After-handler hooks.
|
||||||
|
@ -361,17 +361,24 @@ func (app *BaseApp) DeliverTx(txBytes []byte) (res abci.ResponseDeliverTx) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint- Mostly for testing
|
// nolint - Mostly for testing
|
||||||
func (app *BaseApp) Check(tx sdk.Tx) (result sdk.Result) {
|
func (app *BaseApp) Check(tx sdk.Tx) (result sdk.Result) {
|
||||||
return app.runTx(true, nil, tx)
|
return app.runTx(true, false, nil, tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// nolint - full tx execution
|
||||||
|
func (app *BaseApp) CheckFull(tx sdk.Tx) (result sdk.Result) {
|
||||||
|
return app.runTx(true, true, nil, tx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// nolint
|
||||||
func (app *BaseApp) Deliver(tx sdk.Tx) (result sdk.Result) {
|
func (app *BaseApp) Deliver(tx sdk.Tx) (result sdk.Result) {
|
||||||
return app.runTx(false, nil, tx)
|
return app.runTx(false, false, nil, tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
// txBytes may be nil in some cases, eg. in tests.
|
// txBytes may be nil in some cases, eg. in tests.
|
||||||
// Also, in the future we may support "internal" transactions.
|
// Also, in the future we may support "internal" transactions.
|
||||||
func (app *BaseApp) runTx(isCheckTx bool, txBytes []byte, tx sdk.Tx) (result sdk.Result) {
|
func (app *BaseApp) runTx(isCheckTx bool, fullRun bool, txBytes []byte, tx sdk.Tx) (result sdk.Result) {
|
||||||
// Handle any panics.
|
// Handle any panics.
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
|
@ -407,6 +414,14 @@ func (app *BaseApp) runTx(isCheckTx bool, txBytes []byte, tx sdk.Tx) (result sdk
|
||||||
ctx = app.deliverState.ctx.WithTxBytes(txBytes)
|
ctx = app.deliverState.ctx.WithTxBytes(txBytes)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create a new zeroed gas meter
|
||||||
|
ctx = ctx.WithGasMeter(sdk.NewGasMeter(app.txGasLimit))
|
||||||
|
|
||||||
|
// Simulate a DeliverTx for gas calculation
|
||||||
|
if isCheckTx && fullRun {
|
||||||
|
ctx = ctx.WithIsCheckTx(false)
|
||||||
|
}
|
||||||
|
|
||||||
// Run the ante handler.
|
// Run the ante handler.
|
||||||
if app.anteHandler != nil {
|
if app.anteHandler != nil {
|
||||||
newCtx, result, abort := app.anteHandler(ctx, tx)
|
newCtx, result, abort := app.anteHandler(ctx, tx)
|
||||||
|
@ -427,7 +442,7 @@ func (app *BaseApp) runTx(isCheckTx bool, txBytes []byte, tx sdk.Tx) (result sdk
|
||||||
|
|
||||||
// Get the correct cache
|
// Get the correct cache
|
||||||
var msCache sdk.CacheMultiStore
|
var msCache sdk.CacheMultiStore
|
||||||
if isCheckTx == true {
|
if isCheckTx {
|
||||||
// CacheWrap app.checkState.ms in case it fails.
|
// CacheWrap app.checkState.ms in case it fails.
|
||||||
msCache = app.checkState.CacheMultiStore()
|
msCache = app.checkState.CacheMultiStore()
|
||||||
ctx = ctx.WithMultiStore(msCache)
|
ctx = ctx.WithMultiStore(msCache)
|
||||||
|
@ -435,7 +450,6 @@ func (app *BaseApp) runTx(isCheckTx bool, txBytes []byte, tx sdk.Tx) (result sdk
|
||||||
// CacheWrap app.deliverState.ms in case it fails.
|
// CacheWrap app.deliverState.ms in case it fails.
|
||||||
msCache = app.deliverState.CacheMultiStore()
|
msCache = app.deliverState.CacheMultiStore()
|
||||||
ctx = ctx.WithMultiStore(msCache)
|
ctx = ctx.WithMultiStore(msCache)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
result = handler(ctx, msg)
|
result = handler(ctx, msg)
|
||||||
|
|
Loading…
Reference in New Issue