forked from smallnest/rpcx
/
caller_rust.go
43 lines (30 loc) ยท 1001 Bytes
/
caller_rust.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package client
/*
implement caller for rust GRPC service
*/
import (
"encoding/json"
"reflect"
pbx "github.com/halokid/rpcx-plus/client/proto"
"golang.org/x/net/context"
"google.golang.org/grpc"
logs "github.com/halokid/rpcx-plus/log"
)
// call rust grpc service
func (c *caller) invokeRust(nodeAddr string, svc string, call string, bodyTran map[string]interface{}) ([]byte, error) {
conn, err := grpc.Dial(nodeAddr, grpc.WithInsecure())
if err != nil {
logs.Fatalf("did not connect: %v", err)
}
defer conn.Close()
cx := pbx.NewPorsClient(conn)
// call svc.method
dataJs, _ := json.Marshal(bodyTran)
reqData := `{"call": "` + svc+"."+call + `", "data": ` + string(dataJs) + `}`
rsp, err := cx.Invoke(context.Background(), &pbx.Req{Reqdata: reqData})
if err != nil {
logs.Fatalf("could not greet: %v", err)
}
logs.Debugf("say_hi---rsp type: %+v, struct: %+v, val: %+v", reflect.TypeOf(rsp), rsp, rsp.Rspdata)
return []byte(rsp.Rspdata), nil
}