feat(runtime): message router service (#19571)
This commit is contained in:
+31
-4
@@ -4,17 +4,44 @@ import (
|
||||
"cosmossdk.io/core/appmodule"
|
||||
"cosmossdk.io/core/store"
|
||||
"cosmossdk.io/log"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/baseapp"
|
||||
)
|
||||
|
||||
// NewEnvironment creates a new environment for the application
|
||||
// if memstoreservice is needed, it can be added to the environment: environment.MemStoreService = memstoreservice
|
||||
func NewEnvironment(kvService store.KVStoreService, logger log.Logger) appmodule.Environment {
|
||||
return appmodule.Environment{
|
||||
// For setting custom services that aren't set by default, use the EnvOption
|
||||
// Note: Depinject always provide an environment with all services (mandatory and optional)
|
||||
func NewEnvironment(
|
||||
kvService store.KVStoreService,
|
||||
logger log.Logger,
|
||||
opts ...EnvOption,
|
||||
) appmodule.Environment {
|
||||
env := appmodule.Environment{
|
||||
Logger: logger,
|
||||
EventService: EventService{},
|
||||
HeaderService: HeaderService{},
|
||||
BranchService: BranchService{},
|
||||
GasService: GasService{},
|
||||
KVStoreService: kvService,
|
||||
Logger: logger,
|
||||
}
|
||||
|
||||
for _, opt := range opts {
|
||||
opt(&env)
|
||||
}
|
||||
|
||||
return env
|
||||
}
|
||||
|
||||
type EnvOption func(*appmodule.Environment)
|
||||
|
||||
func EnvWithRouterService(queryServiceRouter *baseapp.GRPCQueryRouter, msgServiceRouter *baseapp.MsgServiceRouter) EnvOption {
|
||||
return func(env *appmodule.Environment) {
|
||||
env.RouterService = NewRouterService(env.KVStoreService, queryServiceRouter, msgServiceRouter)
|
||||
}
|
||||
}
|
||||
|
||||
func EnvWithMemStoreService(memStoreService store.MemoryStoreService) EnvOption {
|
||||
return func(env *appmodule.Environment) {
|
||||
env.MemStoreService = memStoreService
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user