From d1f24d37bd447b64e402298bb8eb2479681facf9 Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Fri, 17 Jul 2020 10:36:28 +0200 Subject: 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 --- binapi/vhost_user/vhost_user.ba.go | 446 ++++++++++++++++++++++++++++++++ binapi/vhost_user/vhost_user_rest.ba.go | 83 ++++++ binapi/vhost_user/vhost_user_rpc.ba.go | 93 +++++++ 3 files changed, 622 insertions(+) create mode 100644 binapi/vhost_user/vhost_user.ba.go create mode 100644 binapi/vhost_user/vhost_user_rest.ba.go create mode 100644 binapi/vhost_user/vhost_user_rpc.ba.go (limited to 'binapi/vhost_user') diff --git a/binapi/vhost_user/vhost_user.ba.go b/binapi/vhost_user/vhost_user.ba.go new file mode 100644 index 0000000..ea3d32b --- /dev/null +++ b/binapi/vhost_user/vhost_user.ba.go @@ -0,0 +1,446 @@ +// Code generated by GoVPP's binapi-generator. DO NOT EDIT. +// versions: +// binapi-generator: v0.4.0-dev +// VPP: 20.05-release +// source: /usr/share/vpp/api/core/vhost_user.api.json + +// Package vhost_user contains generated bindings for API file vhost_user.api. +// +// Contents: +// 8 messages +// +package vhost_user + +import ( + api "git.fd.io/govpp.git/api" + ethernet_types "git.fd.io/govpp.git/binapi/ethernet_types" + interface_types "git.fd.io/govpp.git/binapi/interface_types" + virtio_types "git.fd.io/govpp.git/binapi/virtio_types" + codec "git.fd.io/govpp.git/codec" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the GoVPP api package it is being compiled against. +// A compilation error at this line likely means your copy of the +// GoVPP api package needs to be updated. +const _ = api.GoVppAPIPackageIsVersion2 + +const ( + APIFile = "vhost_user" + APIVersion = "4.0.1" + VersionCrc = 0x3df14dfe +) + +// CreateVhostUserIf defines message 'create_vhost_user_if'. +type CreateVhostUserIf struct { + IsServer bool `binapi:"bool,name=is_server" json:"is_server,omitempty"` + SockFilename string `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"` + Renumber bool `binapi:"bool,name=renumber" json:"renumber,omitempty"` + DisableMrgRxbuf bool `binapi:"bool,name=disable_mrg_rxbuf" json:"disable_mrg_rxbuf,omitempty"` + DisableIndirectDesc bool `binapi:"bool,name=disable_indirect_desc" json:"disable_indirect_desc,omitempty"` + EnableGso bool `binapi:"bool,name=enable_gso" json:"enable_gso,omitempty"` + EnablePacked bool `binapi:"bool,name=enable_packed" json:"enable_packed,omitempty"` + CustomDevInstance uint32 `binapi:"u32,name=custom_dev_instance" json:"custom_dev_instance,omitempty"` + UseCustomMac bool `binapi:"bool,name=use_custom_mac" json:"use_custom_mac,omitempty"` + MacAddress ethernet_types.MacAddress `binapi:"mac_address,name=mac_address" json:"mac_address,omitempty"` + Tag string `binapi:"string[64],name=tag" json:"tag,omitempty"` +} + +func (m *CreateVhostUserIf) Reset() { *m = CreateVhostUserIf{} } +func (*CreateVhostUserIf) GetMessageName() string { return "create_vhost_user_if" } +func (*CreateVhostUserIf) GetCrcString() string { return "c785c6fc" } +func (*CreateVhostUserIf) GetMessageType() api.MessageType { + return api.RequestMessage +} + +func (m *CreateVhostUserIf) Size() int { + if m == nil { + return 0 + } + var size int + size += 1 // m.IsServer + size += 256 // m.SockFilename + size += 1 // m.Renumber + size += 1 // m.DisableMrgRxbuf + size += 1 // m.DisableIndirectDesc + size += 1 // m.EnableGso + size += 1 // m.EnablePacked + size += 4 // m.CustomDevInstance + size += 1 // m.UseCustomMac + size += 1 * 6 // m.MacAddress + size += 64 // m.Tag + return size +} +func (m *CreateVhostUserIf) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeBool(m.IsServer) + buf.EncodeString(m.SockFilename, 256) + buf.EncodeBool(m.Renumber) + buf.EncodeBool(m.DisableMrgRxbuf) + buf.EncodeBool(m.DisableIndirectDesc) + buf.EncodeBool(m.EnableGso) + buf.EncodeBool(m.EnablePacked) + buf.EncodeUint32(uint32(m.CustomDevInstance)) + buf.EncodeBool(m.UseCustomMac) + buf.EncodeBytes(m.MacAddress[:], 6) + buf.EncodeString(m.Tag, 64) + return buf.Bytes(), nil +} +func (m *CreateVhostUserIf) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.IsServer = buf.DecodeBool() + m.SockFilename = buf.DecodeString(256) + m.Renumber = buf.DecodeBool() + m.DisableMrgRxbuf = buf.DecodeBool() + m.DisableIndirectDesc = buf.DecodeBool() + m.EnableGso = buf.DecodeBool() + m.EnablePacked = buf.DecodeBool() + m.CustomDevInstance = buf.DecodeUint32() + m.UseCustomMac = buf.DecodeBool() + copy(m.MacAddress[:], buf.DecodeBytes(6)) + m.Tag = buf.DecodeString(64) + return nil +} + +// CreateVhostUserIfReply defines message 'create_vhost_user_if_reply'. +type CreateVhostUserIfReply struct { + Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"` + SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"` +} + +func (m *CreateVhostUserIfReply) Reset() { *m = CreateVhostUserIfReply{} } +func (*CreateVhostUserIfReply) GetMessageName() string { return "create_vhost_user_if_reply" } +func (*CreateVhostUserIfReply) GetCrcString() string { return "5383d31f" } +func (*CreateVhostUserIfReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +func (m *CreateVhostUserIfReply) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.Retval + size += 4 // m.SwIfIndex + return size +} +func (m *CreateVhostUserIfReply) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.Retval)) + buf.EncodeUint32(uint32(m.SwIfIndex)) + return buf.Bytes(), nil +} +func (m *CreateVhostUserIfReply) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.Retval = int32(buf.DecodeUint32()) + m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32()) + return nil +} + +// DeleteVhostUserIf defines message 'delete_vhost_user_if'. +type DeleteVhostUserIf struct { + SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"` +} + +func (m *DeleteVhostUserIf) Reset() { *m = DeleteVhostUserIf{} } +func (*DeleteVhostUserIf) GetMessageName() string { return "delete_vhost_user_if" } +func (*DeleteVhostUserIf) GetCrcString() string { return "f9e6675e" } +func (*DeleteVhostUserIf) GetMessageType() api.MessageType { + return api.RequestMessage +} + +func (m *DeleteVhostUserIf) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.SwIfIndex + return size +} +func (m *DeleteVhostUserIf) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.SwIfIndex)) + return buf.Bytes(), nil +} +func (m *DeleteVhostUserIf) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32()) + return nil +} + +// DeleteVhostUserIfReply defines message 'delete_vhost_user_if_reply'. +type DeleteVhostUserIfReply struct { + Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"` +} + +func (m *DeleteVhostUserIfReply) Reset() { *m = DeleteVhostUserIfReply{} } +func (*DeleteVhostUserIfReply) GetMessageName() string { return "delete_vhost_user_if_reply" } +func (*DeleteVhostUserIfReply) GetCrcString() string { return "e8d4e804" } +func (*DeleteVhostUserIfReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +func (m *DeleteVhostUserIfReply) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.Retval + return size +} +func (m *DeleteVhostUserIfReply) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.Retval)) + return buf.Bytes(), nil +} +func (m *DeleteVhostUserIfReply) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.Retval = int32(buf.DecodeUint32()) + return nil +} + +// ModifyVhostUserIf defines message 'modify_vhost_user_if'. +type ModifyVhostUserIf struct { + SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"` + IsServer bool `binapi:"bool,name=is_server" json:"is_server,omitempty"` + SockFilename string `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"` + Renumber bool `binapi:"bool,name=renumber" json:"renumber,omitempty"` + EnableGso bool `binapi:"bool,name=enable_gso" json:"enable_gso,omitempty"` + EnablePacked bool `binapi:"bool,name=enable_packed" json:"enable_packed,omitempty"` + CustomDevInstance uint32 `binapi:"u32,name=custom_dev_instance" json:"custom_dev_instance,omitempty"` +} + +func (m *ModifyVhostUserIf) Reset() { *m = ModifyVhostUserIf{} } +func (*ModifyVhostUserIf) GetMessageName() string { return "modify_vhost_user_if" } +func (*ModifyVhostUserIf) GetCrcString() string { return "0e71d40b" } +func (*ModifyVhostUserIf) GetMessageType() api.MessageType { + return api.RequestMessage +} + +func (m *ModifyVhostUserIf) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.SwIfIndex + size += 1 // m.IsServer + size += 256 // m.SockFilename + size += 1 // m.Renumber + size += 1 // m.EnableGso + size += 1 // m.EnablePacked + size += 4 // m.CustomDevInstance + return size +} +func (m *ModifyVhostUserIf) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.SwIfIndex)) + buf.EncodeBool(m.IsServer) + buf.EncodeString(m.SockFilename, 256) + buf.EncodeBool(m.Renumber) + buf.EncodeBool(m.EnableGso) + buf.EncodeBool(m.EnablePacked) + buf.EncodeUint32(uint32(m.CustomDevInstance)) + return buf.Bytes(), nil +} +func (m *ModifyVhostUserIf) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32()) + m.IsServer = buf.DecodeBool() + m.SockFilename = buf.DecodeString(256) + m.Renumber = buf.DecodeBool() + m.EnableGso = buf.DecodeBool() + m.EnablePacked = buf.DecodeBool() + m.CustomDevInstance = buf.DecodeUint32() + return nil +} + +// ModifyVhostUserIfReply defines message 'modify_vhost_user_if_reply'. +type ModifyVhostUserIfReply struct { + Retval int32 `binapi:"i32,name=retval" json:"retval,omitempty"` +} + +func (m *ModifyVhostUserIfReply) Reset() { *m = ModifyVhostUserIfReply{} } +func (*ModifyVhostUserIfReply) GetMessageName() string { return "modify_vhost_user_if_reply" } +func (*ModifyVhostUserIfReply) GetCrcString() string { return "e8d4e804" } +func (*ModifyVhostUserIfReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +func (m *ModifyVhostUserIfReply) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.Retval + return size +} +func (m *ModifyVhostUserIfReply) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.Retval)) + return buf.Bytes(), nil +} +func (m *ModifyVhostUserIfReply) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.Retval = int32(buf.DecodeUint32()) + return nil +} + +// SwInterfaceVhostUserDetails defines message 'sw_interface_vhost_user_details'. +type SwInterfaceVhostUserDetails struct { + SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index" json:"sw_if_index,omitempty"` + InterfaceName string `binapi:"string[64],name=interface_name" json:"interface_name,omitempty"` + VirtioNetHdrSz uint32 `binapi:"u32,name=virtio_net_hdr_sz" json:"virtio_net_hdr_sz,omitempty"` + FeaturesFirst32 virtio_types.VirtioNetFeaturesFirst32 `binapi:"virtio_net_features_first_32,name=features_first_32" json:"features_first_32,omitempty"` + FeaturesLast32 virtio_types.VirtioNetFeaturesLast32 `binapi:"virtio_net_features_last_32,name=features_last_32" json:"features_last_32,omitempty"` + IsServer bool `binapi:"bool,name=is_server" json:"is_server,omitempty"` + SockFilename string `binapi:"string[256],name=sock_filename" json:"sock_filename,omitempty"` + NumRegions uint32 `binapi:"u32,name=num_regions" json:"num_regions,omitempty"` + SockErrno int32 `binapi:"i32,name=sock_errno" json:"sock_errno,omitempty"` +} + +func (m *SwInterfaceVhostUserDetails) Reset() { *m = SwInterfaceVhostUserDetails{} } +func (*SwInterfaceVhostUserDetails) GetMessageName() string { return "sw_interface_vhost_user_details" } +func (*SwInterfaceVhostUserDetails) GetCrcString() string { return "98530df1" } +func (*SwInterfaceVhostUserDetails) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +func (m *SwInterfaceVhostUserDetails) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.SwIfIndex + size += 64 // m.InterfaceName + size += 4 // m.VirtioNetHdrSz + size += 4 // m.FeaturesFirst32 + size += 4 // m.FeaturesLast32 + size += 1 // m.IsServer + size += 256 // m.SockFilename + size += 4 // m.NumRegions + size += 4 // m.SockErrno + return size +} +func (m *SwInterfaceVhostUserDetails) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.SwIfIndex)) + buf.EncodeString(m.InterfaceName, 64) + buf.EncodeUint32(uint32(m.VirtioNetHdrSz)) + buf.EncodeUint32(uint32(m.FeaturesFirst32)) + buf.EncodeUint32(uint32(m.FeaturesLast32)) + buf.EncodeBool(m.IsServer) + buf.EncodeString(m.SockFilename, 256) + buf.EncodeUint32(uint32(m.NumRegions)) + buf.EncodeUint32(uint32(m.SockErrno)) + return buf.Bytes(), nil +} +func (m *SwInterfaceVhostUserDetails) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32()) + m.InterfaceName = buf.DecodeString(64) + m.VirtioNetHdrSz = buf.DecodeUint32() + m.FeaturesFirst32 = virtio_types.VirtioNetFeaturesFirst32(buf.DecodeUint32()) + m.FeaturesLast32 = virtio_types.VirtioNetFeaturesLast32(buf.DecodeUint32()) + m.IsServer = buf.DecodeBool() + m.SockFilename = buf.DecodeString(256) + m.NumRegions = buf.DecodeUint32() + m.SockErrno = int32(buf.DecodeUint32()) + return nil +} + +// SwInterfaceVhostUserDump defines message 'sw_interface_vhost_user_dump'. +type SwInterfaceVhostUserDump struct { + SwIfIndex interface_types.InterfaceIndex `binapi:"interface_index,name=sw_if_index,default=%!s(float64=4.294967295e+09)" json:"sw_if_index,omitempty"` +} + +func (m *SwInterfaceVhostUserDump) Reset() { *m = SwInterfaceVhostUserDump{} } +func (*SwInterfaceVhostUserDump) GetMessageName() string { return "sw_interface_vhost_user_dump" } +func (*SwInterfaceVhostUserDump) GetCrcString() string { return "f9e6675e" } +func (*SwInterfaceVhostUserDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +func (m *SwInterfaceVhostUserDump) Size() int { + if m == nil { + return 0 + } + var size int + size += 4 // m.SwIfIndex + return size +} +func (m *SwInterfaceVhostUserDump) Marshal(b []byte) ([]byte, error) { + var buf *codec.Buffer + if b == nil { + buf = codec.NewBuffer(make([]byte, m.Size())) + } else { + buf = codec.NewBuffer(b) + } + buf.EncodeUint32(uint32(m.SwIfIndex)) + return buf.Bytes(), nil +} +func (m *SwInterfaceVhostUserDump) Unmarshal(b []byte) error { + buf := codec.NewBuffer(b) + m.SwIfIndex = interface_types.InterfaceIndex(buf.DecodeUint32()) + return nil +} + +func init() { file_vhost_user_binapi_init() } +func file_vhost_user_binapi_init() { + api.RegisterMessage((*CreateVhostUserIf)(nil), "create_vhost_user_if_c785c6fc") + api.RegisterMessage((*CreateVhostUserIfReply)(nil), "create_vhost_user_if_reply_5383d31f") + api.RegisterMessage((*DeleteVhostUserIf)(nil), "delete_vhost_user_if_f9e6675e") + api.RegisterMessage((*DeleteVhostUserIfReply)(nil), "delete_vhost_user_if_reply_e8d4e804") + api.RegisterMessage((*ModifyVhostUserIf)(nil), "modify_vhost_user_if_0e71d40b") + api.RegisterMessage((*ModifyVhostUserIfReply)(nil), "modify_vhost_user_if_reply_e8d4e804") + api.RegisterMessage((*SwInterfaceVhostUserDetails)(nil), "sw_interface_vhost_user_details_98530df1") + api.RegisterMessage((*SwInterfaceVhostUserDump)(nil), "sw_interface_vhost_user_dump_f9e6675e") +} + +// Messages returns list of all messages in this module. +func AllMessages() []api.Message { + return []api.Message{ + (*CreateVhostUserIf)(nil), + (*CreateVhostUserIfReply)(nil), + (*DeleteVhostUserIf)(nil), + (*DeleteVhostUserIfReply)(nil), + (*ModifyVhostUserIf)(nil), + (*ModifyVhostUserIfReply)(nil), + (*SwInterfaceVhostUserDetails)(nil), + (*SwInterfaceVhostUserDump)(nil), + } +} diff --git a/binapi/vhost_user/vhost_user_rest.ba.go b/binapi/vhost_user/vhost_user_rest.ba.go new file mode 100644 index 0000000..c2f687b --- /dev/null +++ b/binapi/vhost_user/vhost_user_rest.ba.go @@ -0,0 +1,83 @@ +// Code generated by GoVPP's binapi-generator. DO NOT EDIT. + +package vhost_user + +import ( + "encoding/json" + "io/ioutil" + "net/http" +) + +func RESTHandler(rpc RPCService) http.Handler { + mux := http.NewServeMux() + mux.HandleFunc("/create_vhost_user_if", func(w http.ResponseWriter, req *http.Request) { + var request = new(CreateVhostUserIf) + b, err := ioutil.ReadAll(req.Body) + if err != nil { + http.Error(w, "read body failed", http.StatusBadRequest) + return + } + if err := json.Unmarshal(b, request); err != nil { + http.Error(w, "unmarshal data failed", http.StatusBadRequest) + return + } + reply, err := rpc.CreateVhostUserIf(req.Context(), request) + if err != nil { + http.Error(w, "request failed: "+err.Error(), http.StatusInternalServerError) + return + } + rep, err := json.MarshalIndent(reply, "", " ") + if err != nil { + http.Error(w, "marshal failed: "+err.Error(), http.StatusInternalServerError) + return + } + w.Write(rep) + }) + mux.HandleFunc("/delete_vhost_user_if", func(w http.ResponseWriter, req *http.Request) { + var request = new(DeleteVhostUserIf) + b, err := ioutil.ReadAll(req.Body) + if err != nil { + http.Error(w, "read body failed", http.StatusBadRequest) + return + } + if err := json.Unmarshal(b, request); err != nil { + http.Error(w, "unmarshal data failed", http.StatusBadRequest) + return + } + reply, err := rpc.DeleteVhostUserIf(req.Context(), request) + if err != nil { + http.Error(w, "request failed: "+err.Error(), http.StatusInternalServerError) + return + } + rep, err := json.MarshalIndent(reply, "", " ") + if err != nil { + http.Error(w, "marshal failed: "+err.Error(), http.StatusInternalServerError) + return + } + w.Write(rep) + }) + mux.HandleFunc("/modify_vhost_user_if", func(w http.ResponseWriter, req *http.Request) { + var request = new(ModifyVhostUserIf) + b, err := ioutil.ReadAll(req.Body) + if err != nil { + http.Error(w, "read body failed", http.StatusBadRequest) + return + } + if err := json.Unmarshal(b, request); err != nil { + http.Error(w, "unmarshal data failed", http.StatusBadRequest) + return + } + reply, err := rpc.ModifyVhostUserIf(req.Context(), request) + if err != nil { + http.Error(w, "request failed: "+err.Error(), http.StatusInternalServerError) + return + } + rep, err := json.MarshalIndent(reply, "", " ") + if err != nil { + http.Error(w, "marshal failed: "+err.Error(), http.StatusInternalServerError) + return + } + w.Write(rep) + }) + return http.HandlerFunc(mux.ServeHTTP) +} diff --git a/binapi/vhost_user/vhost_user_rpc.ba.go b/binapi/vhost_user/vhost_user_rpc.ba.go new file mode 100644 index 0000000..091ed53 --- /dev/null +++ b/binapi/vhost_user/vhost_user_rpc.ba.go @@ -0,0 +1,93 @@ +// Code generated by GoVPP's binapi-generator. DO NOT EDIT. + +package vhost_user + +import ( + "context" + "fmt" + api "git.fd.io/govpp.git/api" + vpe "git.fd.io/govpp.git/binapi/vpe" + "io" +) + +// RPCService defines RPC service vhost_user. +type RPCService interface { + CreateVhostUserIf(ctx context.Context, in *CreateVhostUserIf) (*CreateVhostUserIfReply, error) + DeleteVhostUserIf(ctx context.Context, in *DeleteVhostUserIf) (*DeleteVhostUserIfReply, error) + ModifyVhostUserIf(ctx context.Context, in *ModifyVhostUserIf) (*ModifyVhostUserIfReply, error) + SwInterfaceVhostUserDump(ctx context.Context, in *SwInterfaceVhostUserDump) (RPCService_SwInterfaceVhostUserDumpClient, error) +} + +type serviceClient struct { + conn api.Connection +} + +func NewServiceClient(conn api.Connection) RPCService { + return &serviceClient{conn} +} + +func (c *serviceClient) CreateVhostUserIf(ctx context.Context, in *CreateVhostUserIf) (*CreateVhostUserIfReply, error) { + out := new(CreateVhostUserIfReply) + err := c.conn.Invoke(ctx, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) DeleteVhostUserIf(ctx context.Context, in *DeleteVhostUserIf) (*DeleteVhostUserIfReply, error) { + out := new(DeleteVhostUserIfReply) + err := c.conn.Invoke(ctx, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) ModifyVhostUserIf(ctx context.Context, in *ModifyVhostUserIf) (*ModifyVhostUserIfReply, error) { + out := new(ModifyVhostUserIfReply) + err := c.conn.Invoke(ctx, in, out) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) SwInterfaceVhostUserDump(ctx context.Context, in *SwInterfaceVhostUserDump) (RPCService_SwInterfaceVhostUserDumpClient, error) { + stream, err := c.conn.NewStream(ctx) + if err != nil { + return nil, err + } + x := &serviceClient_SwInterfaceVhostUserDumpClient{stream} + if err := x.Stream.SendMsg(in); err != nil { + return nil, err + } + if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil { + return nil, err + } + return x, nil +} + +type RPCService_SwInterfaceVhostUserDumpClient interface { + Recv() (*SwInterfaceVhostUserDetails, error) + api.Stream +} + +type serviceClient_SwInterfaceVhostUserDumpClient struct { + api.Stream +} + +func (c *serviceClient_SwInterfaceVhostUserDumpClient) Recv() (*SwInterfaceVhostUserDetails, error) { + msg, err := c.Stream.RecvMsg() + if err != nil { + return nil, err + } + switch m := msg.(type) { + case *SwInterfaceVhostUserDetails: + return m, nil + case *vpe.ControlPingReply: + return nil, io.EOF + default: + return nil, fmt.Errorf("unexpected message: %T %v", m, m) + } +} -- cgit 1.2.3-korg