aboutsummaryrefslogtreecommitdiffstats
path: root/binapigen/gen_rpc.go
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2020-10-02 16:36:32 +0200
committerOndrej Fabry <ofabry@cisco.com>2020-10-02 16:36:32 +0200
commitc2456559a66107441addb96f673191bde09d6977 (patch)
tree30020a936849f78f432cf5b6fe0bbb0489e485b6 /binapigen/gen_rpc.go
parentf751f3f845ef56bbcdb873d81a1c6edbc5a87853 (diff)
Check retval value and convert to error in generated RPC client code
Change-Id: I816b4802cb5fc46239f6db0480fa4cf3645fe2f0 Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'binapigen/gen_rpc.go')
-rw-r--r--binapigen/gen_rpc.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/binapigen/gen_rpc.go b/binapigen/gen_rpc.go
index ba23f4a..a5974c3 100644
--- a/binapigen/gen_rpc.go
+++ b/binapigen/gen_rpc.go
@@ -71,7 +71,7 @@ func GenerateRPC(gen *Generator, file *File) *GenFile {
func genService(g *GenFile, svc *Service) {
// generate comment
- g.P("// ", serviceApiName, " defines RPC service ", g.file.Desc.Name, ".")
+ g.P("// ", serviceApiName, " defines RPC service ", g.file.Desc.Name, ".")
// generate service interface
g.P("type ", serviceApiName, " interface {")
@@ -160,7 +160,15 @@ func genService(g *GenFile, svc *Service) {
g.P("out := new(", rpc.MsgReply.GoIdent, ")")
g.P("err := c.conn.Invoke(ctx, in, out)")
g.P("if err != nil { return nil, err }")
- g.P("return out, nil")
+ if retvalField := getRetvalField(rpc.MsgReply); retvalField != nil {
+ if fieldType := getFieldType(g, retvalField); fieldType == "int32" {
+ g.P("return out, ", govppApiPkg.Ident("RetvalToVPPApiError"), "(out.", retvalField.GoName, ")")
+ } else {
+ g.P("return out, ", govppApiPkg.Ident("RetvalToVPPApiError"), "(int32(out.", retvalField.GoName, "))")
+ }
+ } else {
+ g.P("return out, nil")
+ }
} else {
g.P("stream, err := c.conn.NewStream(ctx)")
g.P("if err != nil { return err }")