refactor(context): Pass EventManager to the context as an interface. (#14384)

This commit is contained in:
Devon Bear 2022-12-22 00:29:19 -05:00 committed by GitHub
parent f1ee974ec8
commit ebf1e86bdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 2 deletions

View File

@ -62,6 +62,7 @@ Ref: https://keepachangelog.com/en/1.0.0/
### Improvements
* (context)[#14384](https://github.com/cosmos/cosmos-sdk/pull/14384) refactor(context): Pass EventManager to the context as an interface.
* (types) [#14354](https://github.com/cosmos/cosmos-sdk/pull/14354) - improve performance on Context.KVStore and Context.TransientStore by 40%
* (crypto/keyring) [#14151](https://github.com/cosmos/cosmos-sdk/pull/14151) Move keys presentation from `crypto/keyring` to `client/keys`
* (types) [#14163](https://github.com/cosmos/cosmos-sdk/pull/14163) Refactor `(coins Coins) Validate()` to avoid unnecessary map.

View File

@ -37,7 +37,7 @@ type Context struct {
recheckTx bool // if recheckTx == true, then checkTx must also be true
minGasPrice DecCoins
consParams *tmproto.ConsensusParams
eventManager *EventManager
eventManager EventManagerI
priority int64 // The tx priority, only relevant in CheckTx
kvGasConfig storetypes.GasConfig
transientKVGasConfig storetypes.GasConfig
@ -60,7 +60,7 @@ func (c Context) BlockGasMeter() GasMeter { return c.blockGas
func (c Context) IsCheckTx() bool { return c.checkTx }
func (c Context) IsReCheckTx() bool { return c.recheckTx }
func (c Context) MinGasPrices() DecCoins { return c.minGasPrice }
func (c Context) EventManager() *EventManager { return c.eventManager }
func (c Context) EventManager() EventManagerI { return c.eventManager }
func (c Context) Priority() int64 { return c.priority }
func (c Context) KVGasConfig() storetypes.GasConfig { return c.kvGasConfig }
func (c Context) TransientKVGasConfig() storetypes.GasConfig { return c.transientKVGasConfig }

View File

@ -17,10 +17,21 @@ import (
"github.com/cosmos/cosmos-sdk/codec"
)
type EventManagerI interface {
Events() Events
ABCIEvents() []abci.Event
EmitTypedEvent(tev proto.Message) error
EmitTypedEvents(tevs ...proto.Message) error
EmitEvent(event Event)
EmitEvents(events Events)
}
// ----------------------------------------------------------------------------
// Event Manager
// ----------------------------------------------------------------------------
var _ EventManagerI = (*EventManager)(nil)
// EventManager implements a simple wrapper around a slice of Event objects that
// can be emitted from.
type EventManager struct {