Fix binapigen decoding and minor improvements
[govpp.git] / internal / testbinapi / binapi2001 / interface / interface_rpc.ba.go
@@ -4,15 +4,14 @@ package interfaces
 
 import (
        "context"
-       "io"
-
+       "fmt"
        api "git.fd.io/govpp.git/api"
+       vpe "git.fd.io/govpp.git/internal/testbinapi/binapi2001/vpe"
+       "io"
 )
 
-// RPCService represents RPC service API for interface module.
+// RPCService defines RPC service  interface.
 type RPCService interface {
-       DumpSwInterface(ctx context.Context, in *SwInterfaceDump) (RPCService_DumpSwInterfaceClient, error)
-       DumpSwInterfaceRxPlacement(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_DumpSwInterfaceRxPlacementClient, error)
        CollectDetailedInterfaceStats(ctx context.Context, in *CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error)
        CreateLoopback(ctx context.Context, in *CreateLoopback) (*CreateLoopbackReply, error)
        CreateLoopbackInstance(ctx context.Context, in *CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error)
@@ -25,8 +24,10 @@ type RPCService interface {
        SwInterfaceAddDelAddress(ctx context.Context, in *SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error)
        SwInterfaceAddDelMacAddress(ctx context.Context, in *SwInterfaceAddDelMacAddress) (*SwInterfaceAddDelMacAddressReply, error)
        SwInterfaceClearStats(ctx context.Context, in *SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error)
+       SwInterfaceDump(ctx context.Context, in *SwInterfaceDump) (RPCService_SwInterfaceDumpClient, error)
        SwInterfaceGetMacAddress(ctx context.Context, in *SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error)
        SwInterfaceGetTable(ctx context.Context, in *SwInterfaceGetTable) (*SwInterfaceGetTableReply, error)
+       SwInterfaceRxPlacementDump(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_SwInterfaceRxPlacementDumpClient, error)
        SwInterfaceSetFlags(ctx context.Context, in *SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error)
        SwInterfaceSetIPDirectedBroadcast(ctx context.Context, in *SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error)
        SwInterfaceSetMacAddress(ctx context.Context, in *SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error)
@@ -40,68 +41,16 @@ type RPCService interface {
 }
 
 type serviceClient struct {
-       ch api.Channel
-}
-
-func NewServiceClient(ch api.Channel) RPCService {
-       return &serviceClient{ch}
-}
-
-func (c *serviceClient) DumpSwInterface(ctx context.Context, in *SwInterfaceDump) (RPCService_DumpSwInterfaceClient, error) {
-       stream := c.ch.SendMultiRequest(in)
-       x := &serviceClient_DumpSwInterfaceClient{stream}
-       return x, nil
-}
-
-type RPCService_DumpSwInterfaceClient interface {
-       Recv() (*SwInterfaceDetails, error)
-}
-
-type serviceClient_DumpSwInterfaceClient struct {
-       api.MultiRequestCtx
+       conn api.Connection
 }
 
-func (c *serviceClient_DumpSwInterfaceClient) Recv() (*SwInterfaceDetails, error) {
-       m := new(SwInterfaceDetails)
-       stop, err := c.MultiRequestCtx.ReceiveReply(m)
-       if err != nil {
-               return nil, err
-       }
-       if stop {
-               return nil, io.EOF
-       }
-       return m, nil
-}
-
-func (c *serviceClient) DumpSwInterfaceRxPlacement(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_DumpSwInterfaceRxPlacementClient, error) {
-       stream := c.ch.SendMultiRequest(in)
-       x := &serviceClient_DumpSwInterfaceRxPlacementClient{stream}
-       return x, nil
-}
-
-type RPCService_DumpSwInterfaceRxPlacementClient interface {
-       Recv() (*SwInterfaceRxPlacementDetails, error)
-}
-
-type serviceClient_DumpSwInterfaceRxPlacementClient struct {
-       api.MultiRequestCtx
-}
-
-func (c *serviceClient_DumpSwInterfaceRxPlacementClient) Recv() (*SwInterfaceRxPlacementDetails, error) {
-       m := new(SwInterfaceRxPlacementDetails)
-       stop, err := c.MultiRequestCtx.ReceiveReply(m)
-       if err != nil {
-               return nil, err
-       }
-       if stop {
-               return nil, io.EOF
-       }
-       return m, nil
+func NewServiceClient(conn api.Connection) RPCService {
+       return &serviceClient{conn}
 }
 
 func (c *serviceClient) CollectDetailedInterfaceStats(ctx context.Context, in *CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error) {
        out := new(CollectDetailedInterfaceStatsReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -110,7 +59,7 @@ func (c *serviceClient) CollectDetailedInterfaceStats(ctx context.Context, in *C
 
 func (c *serviceClient) CreateLoopback(ctx context.Context, in *CreateLoopback) (*CreateLoopbackReply, error) {
        out := new(CreateLoopbackReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -119,7 +68,7 @@ func (c *serviceClient) CreateLoopback(ctx context.Context, in *CreateLoopback)
 
 func (c *serviceClient) CreateLoopbackInstance(ctx context.Context, in *CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error) {
        out := new(CreateLoopbackInstanceReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -128,7 +77,7 @@ func (c *serviceClient) CreateLoopbackInstance(ctx context.Context, in *CreateLo
 
 func (c *serviceClient) CreateSubif(ctx context.Context, in *CreateSubif) (*CreateSubifReply, error) {
        out := new(CreateSubifReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -137,7 +86,7 @@ func (c *serviceClient) CreateSubif(ctx context.Context, in *CreateSubif) (*Crea
 
 func (c *serviceClient) CreateVlanSubif(ctx context.Context, in *CreateVlanSubif) (*CreateVlanSubifReply, error) {
        out := new(CreateVlanSubifReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -146,7 +95,7 @@ func (c *serviceClient) CreateVlanSubif(ctx context.Context, in *CreateVlanSubif
 
 func (c *serviceClient) DeleteLoopback(ctx context.Context, in *DeleteLoopback) (*DeleteLoopbackReply, error) {
        out := new(DeleteLoopbackReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -155,7 +104,7 @@ func (c *serviceClient) DeleteLoopback(ctx context.Context, in *DeleteLoopback)
 
 func (c *serviceClient) DeleteSubif(ctx context.Context, in *DeleteSubif) (*DeleteSubifReply, error) {
        out := new(DeleteSubifReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -164,7 +113,7 @@ func (c *serviceClient) DeleteSubif(ctx context.Context, in *DeleteSubif) (*Dele
 
 func (c *serviceClient) HwInterfaceSetMtu(ctx context.Context, in *HwInterfaceSetMtu) (*HwInterfaceSetMtuReply, error) {
        out := new(HwInterfaceSetMtuReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -173,7 +122,7 @@ func (c *serviceClient) HwInterfaceSetMtu(ctx context.Context, in *HwInterfaceSe
 
 func (c *serviceClient) InterfaceNameRenumber(ctx context.Context, in *InterfaceNameRenumber) (*InterfaceNameRenumberReply, error) {
        out := new(InterfaceNameRenumberReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -182,7 +131,7 @@ func (c *serviceClient) InterfaceNameRenumber(ctx context.Context, in *Interface
 
 func (c *serviceClient) SwInterfaceAddDelAddress(ctx context.Context, in *SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error) {
        out := new(SwInterfaceAddDelAddressReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -191,7 +140,7 @@ func (c *serviceClient) SwInterfaceAddDelAddress(ctx context.Context, in *SwInte
 
 func (c *serviceClient) SwInterfaceAddDelMacAddress(ctx context.Context, in *SwInterfaceAddDelMacAddress) (*SwInterfaceAddDelMacAddressReply, error) {
        out := new(SwInterfaceAddDelMacAddressReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -200,16 +149,55 @@ func (c *serviceClient) SwInterfaceAddDelMacAddress(ctx context.Context, in *SwI
 
 func (c *serviceClient) SwInterfaceClearStats(ctx context.Context, in *SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error) {
        out := new(SwInterfaceClearStatsReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
        return out, nil
 }
 
+func (c *serviceClient) SwInterfaceDump(ctx context.Context, in *SwInterfaceDump) (RPCService_SwInterfaceDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SwInterfaceDumpClient{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_SwInterfaceDumpClient interface {
+       Recv() (*SwInterfaceDetails, error)
+       api.Stream
+}
+
+type serviceClient_SwInterfaceDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SwInterfaceDumpClient) Recv() (*SwInterfaceDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SwInterfaceDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) SwInterfaceGetMacAddress(ctx context.Context, in *SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error) {
        out := new(SwInterfaceGetMacAddressReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -218,16 +206,55 @@ func (c *serviceClient) SwInterfaceGetMacAddress(ctx context.Context, in *SwInte
 
 func (c *serviceClient) SwInterfaceGetTable(ctx context.Context, in *SwInterfaceGetTable) (*SwInterfaceGetTableReply, error) {
        out := new(SwInterfaceGetTableReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
        return out, nil
 }
 
+func (c *serviceClient) SwInterfaceRxPlacementDump(ctx context.Context, in *SwInterfaceRxPlacementDump) (RPCService_SwInterfaceRxPlacementDumpClient, error) {
+       stream, err := c.conn.NewStream(ctx)
+       if err != nil {
+               return nil, err
+       }
+       x := &serviceClient_SwInterfaceRxPlacementDumpClient{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_SwInterfaceRxPlacementDumpClient interface {
+       Recv() (*SwInterfaceRxPlacementDetails, error)
+       api.Stream
+}
+
+type serviceClient_SwInterfaceRxPlacementDumpClient struct {
+       api.Stream
+}
+
+func (c *serviceClient_SwInterfaceRxPlacementDumpClient) Recv() (*SwInterfaceRxPlacementDetails, error) {
+       msg, err := c.Stream.RecvMsg()
+       if err != nil {
+               return nil, err
+       }
+       switch m := msg.(type) {
+       case *SwInterfaceRxPlacementDetails:
+               return m, nil
+       case *vpe.ControlPingReply:
+               return nil, io.EOF
+       default:
+               return nil, fmt.Errorf("unexpected message: %T %v", m, m)
+       }
+}
+
 func (c *serviceClient) SwInterfaceSetFlags(ctx context.Context, in *SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error) {
        out := new(SwInterfaceSetFlagsReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -236,7 +263,7 @@ func (c *serviceClient) SwInterfaceSetFlags(ctx context.Context, in *SwInterface
 
 func (c *serviceClient) SwInterfaceSetIPDirectedBroadcast(ctx context.Context, in *SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error) {
        out := new(SwInterfaceSetIPDirectedBroadcastReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -245,7 +272,7 @@ func (c *serviceClient) SwInterfaceSetIPDirectedBroadcast(ctx context.Context, i
 
 func (c *serviceClient) SwInterfaceSetMacAddress(ctx context.Context, in *SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error) {
        out := new(SwInterfaceSetMacAddressReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -254,7 +281,7 @@ func (c *serviceClient) SwInterfaceSetMacAddress(ctx context.Context, in *SwInte
 
 func (c *serviceClient) SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error) {
        out := new(SwInterfaceSetMtuReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -263,7 +290,7 @@ func (c *serviceClient) SwInterfaceSetMtu(ctx context.Context, in *SwInterfaceSe
 
 func (c *serviceClient) SwInterfaceSetRxMode(ctx context.Context, in *SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error) {
        out := new(SwInterfaceSetRxModeReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -272,7 +299,7 @@ func (c *serviceClient) SwInterfaceSetRxMode(ctx context.Context, in *SwInterfac
 
 func (c *serviceClient) SwInterfaceSetRxPlacement(ctx context.Context, in *SwInterfaceSetRxPlacement) (*SwInterfaceSetRxPlacementReply, error) {
        out := new(SwInterfaceSetRxPlacementReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -281,7 +308,7 @@ func (c *serviceClient) SwInterfaceSetRxPlacement(ctx context.Context, in *SwInt
 
 func (c *serviceClient) SwInterfaceSetTable(ctx context.Context, in *SwInterfaceSetTable) (*SwInterfaceSetTableReply, error) {
        out := new(SwInterfaceSetTableReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -290,7 +317,7 @@ func (c *serviceClient) SwInterfaceSetTable(ctx context.Context, in *SwInterface
 
 func (c *serviceClient) SwInterfaceSetUnnumbered(ctx context.Context, in *SwInterfaceSetUnnumbered) (*SwInterfaceSetUnnumberedReply, error) {
        out := new(SwInterfaceSetUnnumberedReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -299,7 +326,7 @@ func (c *serviceClient) SwInterfaceSetUnnumbered(ctx context.Context, in *SwInte
 
 func (c *serviceClient) SwInterfaceTagAddDel(ctx context.Context, in *SwInterfaceTagAddDel) (*SwInterfaceTagAddDelReply, error) {
        out := new(SwInterfaceTagAddDelReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
@@ -308,14 +335,9 @@ func (c *serviceClient) SwInterfaceTagAddDel(ctx context.Context, in *SwInterfac
 
 func (c *serviceClient) WantInterfaceEvents(ctx context.Context, in *WantInterfaceEvents) (*WantInterfaceEventsReply, error) {
        out := new(WantInterfaceEventsReply)
-       err := c.ch.SendRequest(in).ReceiveReply(out)
+       err := c.conn.Invoke(ctx, in, out)
        if err != nil {
                return nil, err
        }
        return out, nil
 }
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ = api.RegisterMessage
-var _ = context.Background
-var _ = io.Copy