6
6
| |
7
7
| rpc/core/service.go |
8
8
| |
9
- | LastModified: Mar 6, 2022 |
9
+ | LastModified: Sep 13, 2023 |
10
10
| Author: Ma Bingyao <[email protected] > |
11
11
| |
12
12
\*________________________________________________________*/
@@ -103,26 +103,34 @@ func (s *Service) GetHandler(name string) Handler {
103
103
104
104
// Handle the reqeust and returns the response.
105
105
func (s * Service ) Handle (ctx context.Context , request []byte ) ([]byte , error ) {
106
- return s .ioManager .Handler ().(NextIOHandler )(ctx , request )
106
+ response , err := s .ioManager .Handler ().(NextIOHandler )(ctx , request )
107
+ if len (response ) == 0 {
108
+ serviceContext := GetServiceContext (ctx )
109
+ if err == nil {
110
+ return s .Codec .Encode (nil , serviceContext )
111
+ }
112
+ return s .Codec .Encode (err , serviceContext )
113
+ }
114
+ return response , err
107
115
}
108
116
109
117
// Process the reqeust and returns the response.
110
118
func (s * Service ) Process (ctx context.Context , request []byte ) ([]byte , error ) {
111
119
serviceContext := GetServiceContext (ctx )
112
120
name , args , err := s .Codec .Decode (request , serviceContext )
113
121
if err != nil {
114
- return s . Codec . Encode ( err , serviceContext )
122
+ return nil , err
115
123
}
116
124
var result interface {}
117
125
func () {
118
126
defer func () {
119
127
if p := recover (); p != nil {
120
- result = NewPanicError (p )
128
+ err = NewPanicError (p )
121
129
}
122
130
}()
123
- results , err := s .invokeManager .Handler ().(NextInvokeHandler )(ctx , name , args )
124
- if err != nil {
125
- result = err
131
+ results , e := s .invokeManager .Handler ().(NextInvokeHandler )(ctx , name , args )
132
+ if e != nil {
133
+ err = e
126
134
return
127
135
}
128
136
switch len (results ) {
@@ -134,6 +142,9 @@ func (s *Service) Process(ctx context.Context, request []byte) ([]byte, error) {
134
142
result = results
135
143
}
136
144
}()
145
+ if err != nil {
146
+ return nil , err
147
+ }
137
148
return s .Codec .Encode (result , serviceContext )
138
149
}
139
150
0 commit comments