Co-authored-by: testinginprod <98415576+testinginprod@users.noreply.github.com> Co-authored-by: Julien Robert <julien@rbrt.fr>
This commit is contained in:
co-authored by
testinginprod
Julien Robert
parent
3135f41a6d
commit
0ca08e1ee1
+4
-4
@@ -44,9 +44,9 @@ type App[T transaction.Tx] struct {
|
||||
amino legacy.Amino
|
||||
moduleManager *MM[T]
|
||||
|
||||
// GRPCQueryDecoders maps gRPC method name to a function that decodes the request
|
||||
// GRPCMethodsToMessageMap maps gRPC method name to a function that decodes the request
|
||||
// bytes into a gogoproto.Message, which then can be passed to appmanager.
|
||||
GRPCQueryDecoders map[string]func(requestBytes []byte) (gogoproto.Message, error)
|
||||
GRPCMethodsToMessageMap map[string]func() gogoproto.Message
|
||||
}
|
||||
|
||||
// Name returns the app name.
|
||||
@@ -118,6 +118,6 @@ func (a *App[T]) GetAppManager() *appmanager.AppManager[T] {
|
||||
return a.AppManager
|
||||
}
|
||||
|
||||
func (a *App[T]) GetGRPCQueryDecoders() map[string]func(requestBytes []byte) (gogoproto.Message, error) {
|
||||
return a.GRPCQueryDecoders
|
||||
func (a *App[T]) GetGPRCMethodsToMessageMap() map[string]func() gogoproto.Message {
|
||||
return a.GRPCMethodsToMessageMap
|
||||
}
|
||||
|
||||
+10
-7
@@ -556,7 +556,7 @@ func (m *MM[T]) assertNoForgottenModules(
|
||||
|
||||
func registerServices[T transaction.Tx](s appmodule.HasServices, app *App[T], registry *protoregistry.Files) error {
|
||||
c := &configurator{
|
||||
grpcQueryDecoders: map[string]func([]byte) (gogoproto.Message, error){},
|
||||
grpcQueryDecoders: map[string]func() gogoproto.Message{},
|
||||
stfQueryRouter: app.queryRouterBuilder,
|
||||
stfMsgRouter: app.msgRouterBuilder,
|
||||
registry: registry,
|
||||
@@ -567,7 +567,10 @@ func registerServices[T transaction.Tx](s appmodule.HasServices, app *App[T], re
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to register services: %w", err)
|
||||
}
|
||||
app.GRPCQueryDecoders = c.grpcQueryDecoders
|
||||
// merge maps
|
||||
for path, decoder := range c.grpcQueryDecoders {
|
||||
app.GRPCMethodsToMessageMap[path] = decoder
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -576,7 +579,7 @@ var _ grpc.ServiceRegistrar = (*configurator)(nil)
|
||||
type configurator struct {
|
||||
// grpcQueryDecoders is required because module expose queries through gRPC
|
||||
// this provides a way to route to modules using gRPC.
|
||||
grpcQueryDecoders map[string]func([]byte) (gogoproto.Message, error)
|
||||
grpcQueryDecoders map[string]func() gogoproto.Message
|
||||
|
||||
stfQueryRouter *stf.MsgRouterBuilder
|
||||
stfMsgRouter *stf.MsgRouterBuilder
|
||||
@@ -618,11 +621,11 @@ func (c *configurator) registerQueryHandlers(sd *grpc.ServiceDesc, ss interface{
|
||||
if typ == nil {
|
||||
return fmt.Errorf("unable to find message in gogotype registry: %w", err)
|
||||
}
|
||||
decoderFunc := func(bytes []byte) (gogoproto.Message, error) {
|
||||
msg := reflect.New(typ.Elem()).Interface().(gogoproto.Message)
|
||||
return msg, gogoproto.Unmarshal(bytes, msg)
|
||||
decoderFunc := func() gogoproto.Message {
|
||||
return reflect.New(typ.Elem()).Interface().(gogoproto.Message)
|
||||
}
|
||||
c.grpcQueryDecoders[md.MethodName] = decoderFunc
|
||||
methodName := fmt.Sprintf("/%s/%s", sd.ServiceName, md.MethodName)
|
||||
c.grpcQueryDecoders[methodName] = decoderFunc
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -130,11 +130,12 @@ func ProvideAppBuilder[T transaction.Tx](
|
||||
|
||||
msgRouterBuilder := stf.NewMsgRouterBuilder()
|
||||
app := &App[T]{
|
||||
storeKeys: nil,
|
||||
interfaceRegistrar: interfaceRegistrar,
|
||||
amino: amino,
|
||||
msgRouterBuilder: msgRouterBuilder,
|
||||
queryRouterBuilder: stf.NewMsgRouterBuilder(), // TODO dedicated query router
|
||||
storeKeys: nil,
|
||||
interfaceRegistrar: interfaceRegistrar,
|
||||
amino: amino,
|
||||
msgRouterBuilder: msgRouterBuilder,
|
||||
queryRouterBuilder: stf.NewMsgRouterBuilder(), // TODO dedicated query router
|
||||
GRPCMethodsToMessageMap: map[string]func() proto.Message{},
|
||||
}
|
||||
appBuilder := &AppBuilder[T]{app: app}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user