+ stream, err := c.NewStream(ctx)
+ if err != nil {
+ return err
+ }
+ if err := stream.SendMsg(req); err != nil {
+ return err
+ }
+ msg, err := stream.RecvMsg()
+ if err != nil {
+ return err
+ }
+ if msg.GetMessageName() != reply.GetMessageName() ||
+ msg.GetCrcString() != reply.GetCrcString() {
+ return fmt.Errorf("unexpected reply: %T %+v", msg, msg)
+ }
+ reflect.ValueOf(reply).Elem().Set(reflect.ValueOf(msg).Elem())
+ return nil