diff options
author | Ondrej Fabry <ofabry@cisco.com> | 2020-07-17 10:36:28 +0200 |
---|---|---|
committer | Ondrej Fabry <ofabry@cisco.com> | 2020-07-17 11:43:41 +0200 |
commit | d1f24d37bd447b64e402298bb8eb2479681facf9 (patch) | |
tree | a3fc21ba730a91d8a402c7a5bf9c614e3677c4fc /core/stream.go | |
parent | 1548c7e12531e3d055567d761c580a1c7ff0ac40 (diff) |
Improve binapi generator
- simplified Size/Marshal/Unmarshal methods
- replace struc in unions with custom marshal/unmarshal
- fix imports in generated files
- fix mock adapter
- generate rpc service using low-level stream API (dumps generate control ping or stream msg..)
- move examples/binapi to binapi and generate all API for latest release
- add binapigen.Plugin for developing custom generator plugins
- optionally generate HTTP handlers (REST API) for RPC services
- add govpp program for browsing VPP API
Change-Id: I092e9ed2b0c17972b3476463c3d4b14dd76ed42b
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'core/stream.go')
-rw-r--r-- | core/stream.go | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/core/stream.go b/core/stream.go index edc3f2b..171b201 100644 --- a/core/stream.go +++ b/core/stream.go @@ -62,8 +62,23 @@ func (c *Connection) NewStream(ctx context.Context) (api.Stream, error) { } func (c *Connection) Invoke(ctx context.Context, req api.Message, reply api.Message) error { - // TODO: implement invoke - panic("not implemented") + 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 } func (s *Stream) Context() context.Context { |