1717
1818package twoway_codec_impl
1919
20- import (
21- perrors "github.com/pkg/errors"
22- )
23-
2420import (
2521 "github.com/dubbogo/triple/internal/codec"
2622 "github.com/dubbogo/triple/internal/codec/codec_impl"
2723 proto2 "github.com/dubbogo/triple/internal/codec/proto"
24+ "github.com/dubbogo/triple/internal/codes"
25+ "github.com/dubbogo/triple/internal/status"
2826 "github.com/dubbogo/triple/pkg/common"
2927 "github.com/dubbogo/triple/pkg/common/constant"
3028)
@@ -65,12 +63,15 @@ func NewPBWrapperTwoWayCodec(codecName constant.CodecType) (common.TwoWayCodec,
6563func (h * PBWrapperTwoWayCodec ) MarshalRequest (v interface {}) ([]byte , error ) {
6664 argsBytes := make ([][]byte , 0 )
6765 argsTypes := make ([]string , 0 )
68- data , err := h .codec .Marshal (v )
69- if err != nil {
70- return nil , err
66+ reqList := v .([]interface {})
67+ for _ , value := range reqList {
68+ data , err := h .codec .Marshal (value )
69+ if err != nil {
70+ return nil , err
71+ }
72+ argsBytes = append (argsBytes , data )
73+ argsTypes = append (argsTypes , codec .GetArgType (value ))
7174 }
72- argsBytes = append (argsBytes , data )
73- argsTypes = append (argsTypes , codec .GetArgType (v ))
7475
7576 wrapperRequest := & proto2.TripleRequestWrapper {
7677 SerializeType : common .GetCodecInWrapperName (h .codecName ),
@@ -87,12 +88,18 @@ func (h *PBWrapperTwoWayCodec) UnmarshalRequest(data []byte, v interface{}) erro
8788 if err != nil {
8889 return err
8990 }
90- if len (wrapperRequest .Args ) != 1 {
91- return perrors .New ("wrapper request args len is not 1" )
91+
92+ paramsInterfaces := v .([]interface {})
93+ if len (paramsInterfaces ) != len (wrapperRequest .Args ) {
94+ return status .Errorf (codes .Internal , "error ,request params len is %d, but exported method has %d" , len (wrapperRequest .Args ), len (paramsInterfaces ))
9295 }
93- if err := h .codec .Unmarshal (wrapperRequest .Args [0 ], v ); err != nil {
94- return err
96+
97+ for idx , value := range wrapperRequest .Args {
98+ if err := h .codec .Unmarshal (value , paramsInterfaces [idx ]); err != nil {
99+ return err
100+ }
95101 }
102+
96103 return nil
97104}
98105
0 commit comments