From 9db20b48e503a39dcc7b17ee182e6a20bc1cf5ae Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Thu, 15 Oct 2020 20:05:57 +0200 Subject: [PATCH 1/2] msg_service_router: reduce code complexity --- baseapp/msg_service_router.go | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/baseapp/msg_service_router.go b/baseapp/msg_service_router.go index efc108881bda..52ceda9754f0 100644 --- a/baseapp/msg_service_router.go +++ b/baseapp/msg_service_router.go @@ -4,6 +4,8 @@ import ( "context" "fmt" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/gogo/protobuf/proto" gogogrpc "github.com/gogo/protobuf/grpc" @@ -59,28 +61,24 @@ func (msr *MsgServiceRouter) RegisterService(sd *grpc.ServiceDesc, handler inter msr.interfaceRegistry.RegisterCustomTypeURL((*sdk.MsgRequest)(nil), fqMethod, msg) return nil - }, func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp interface{}, err error) { - return nil, nil - }) + }, noopInterceptor) msr.routes[fqMethod] = func(ctx sdk.Context, req sdk.MsgRequest) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) - - // Call the method handler from the service description with the handler object. - res, err := methodHandler(handler, sdk.WrapSDKContext(ctx), func(_ interface{}) error { - // We don't do any decoding here because the decoding was already done. - return nil - }, func(goCtx context.Context, _ interface{}, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { + interceptor := func(goCtx context.Context, _ interface{}, _ *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) { goCtx = context.WithValue(goCtx, sdk.SdkContextKey, ctx) return handler(goCtx, req) - }) + } + // Call the method handler from the service description with the handler object. + // We don't do any decoding here because the decoding was already done. + res, err := methodHandler(handler, sdk.WrapSDKContext(ctx), noopDecoder, interceptor) if err != nil { return nil, err } resMsg, ok := res.(proto.Message) if !ok { - return nil, fmt.Errorf("can't proto encode %T", resMsg) + return nil, sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "Expecting proto.Message, got %T", resMsg) } return sdk.WrapServiceResult(ctx, resMsg, err) @@ -92,3 +90,10 @@ func (msr *MsgServiceRouter) RegisterService(sd *grpc.ServiceDesc, handler inter func (msr *MsgServiceRouter) SetInterfaceRegistry(interfaceRegistry codectypes.InterfaceRegistry) { msr.interfaceRegistry = interfaceRegistry } + +// gRPC NOOP interceptor +func noopInterceptor(_ context.Context, _ interface{}, _ *grpc.UnaryServerInfo, _ grpc.UnaryHandler) (interface{}, error) { + return nil, nil +} + +func noopDecoder(_ interface{}) error { return nil } From 1294fadc06ddba964d39ecf3c273bda09e60e9fd Mon Sep 17 00:00:00 2001 From: Robert Zaremba Date: Thu, 15 Oct 2020 22:44:18 +0200 Subject: [PATCH 2/2] order imports --- baseapp/msg_service_router.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/baseapp/msg_service_router.go b/baseapp/msg_service_router.go index 52ceda9754f0..b02fbd10c0d4 100644 --- a/baseapp/msg_service_router.go +++ b/baseapp/msg_service_router.go @@ -4,15 +4,13 @@ import ( "context" "fmt" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - - "github.com/gogo/protobuf/proto" - gogogrpc "github.com/gogo/protobuf/grpc" + "github.com/gogo/protobuf/proto" "google.golang.org/grpc" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) // MsgServiceRouter routes fully-qualified Msg service methods to their handler.