(message *codec.Message, body interface{})
| 174 | } |
| 175 | |
| 176 | func (c *rpcCodec) Write(message *codec.Message, body interface{}) error { |
| 177 | c.buf.wbuf.Reset() |
| 178 | |
| 179 | // create header |
| 180 | if message.Header == nil { |
| 181 | message.Header = map[string]string{} |
| 182 | } |
| 183 | |
| 184 | // copy original header |
| 185 | for k, v := range c.req.Header { |
| 186 | message.Header[k] = v |
| 187 | } |
| 188 | |
| 189 | // set the mucp headers |
| 190 | setHeaders(message, c.stream) |
| 191 | |
| 192 | // if body is bytes Frame don't encode |
| 193 | if body != nil { |
| 194 | if b, ok := body.(*raw.Frame); ok { |
| 195 | // set body |
| 196 | message.Body = b.Data |
| 197 | } else { |
| 198 | // write to codec |
| 199 | if err := c.codec.Write(message, body); err != nil { |
| 200 | return errors.InternalServerError("go.micro.client.codec", err.Error()) |
| 201 | } |
| 202 | // set body |
| 203 | message.Body = c.buf.wbuf.Bytes() |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | // create new transport message |
| 208 | msg := transport.Message{ |
| 209 | Header: message.Header, |
| 210 | Body: message.Body, |
| 211 | } |
| 212 | |
| 213 | // send the request |
| 214 | if err := c.client.Send(&msg); err != nil { |
| 215 | return errors.InternalServerError("go.micro.client.transport", err.Error()) |
| 216 | } |
| 217 | |
| 218 | return nil |
| 219 | } |
| 220 | |
| 221 | func (c *rpcCodec) ReadHeader(msg *codec.Message, r codec.MessageType) error { |
| 222 | var tm transport.Message |
nothing calls this directly
no test coverage detected