github.com/edwarnicke/govpp@v0.0.0-20230130211138-14ef5d20b1d0/binapi/fib/fib_rpc.ba.go (about)

     1  // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
     2  
     3  package fib
     4  
     5  import (
     6  	"context"
     7  	"fmt"
     8  	"io"
     9  
    10  	api "git.fd.io/govpp.git/api"
    11  	memclnt "github.com/edwarnicke/govpp/binapi/memclnt"
    12  )
    13  
    14  // RPCService defines RPC service fib.
    15  type RPCService interface {
    16  	FibSourceAdd(ctx context.Context, in *FibSourceAdd) (*FibSourceAddReply, error)
    17  	FibSourceDump(ctx context.Context, in *FibSourceDump) (RPCService_FibSourceDumpClient, error)
    18  }
    19  
    20  type serviceClient struct {
    21  	conn api.Connection
    22  }
    23  
    24  func NewServiceClient(conn api.Connection) RPCService {
    25  	return &serviceClient{conn}
    26  }
    27  
    28  func (c *serviceClient) FibSourceAdd(ctx context.Context, in *FibSourceAdd) (*FibSourceAddReply, error) {
    29  	out := new(FibSourceAddReply)
    30  	err := c.conn.Invoke(ctx, in, out)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	return out, api.RetvalToVPPApiError(out.Retval)
    35  }
    36  
    37  func (c *serviceClient) FibSourceDump(ctx context.Context, in *FibSourceDump) (RPCService_FibSourceDumpClient, error) {
    38  	stream, err := c.conn.NewStream(ctx)
    39  	if err != nil {
    40  		return nil, err
    41  	}
    42  	x := &serviceClient_FibSourceDumpClient{stream}
    43  	if err := x.Stream.SendMsg(in); err != nil {
    44  		return nil, err
    45  	}
    46  	if err = x.Stream.SendMsg(&memclnt.ControlPing{}); err != nil {
    47  		return nil, err
    48  	}
    49  	return x, nil
    50  }
    51  
    52  type RPCService_FibSourceDumpClient interface {
    53  	Recv() (*FibSourceDetails, error)
    54  	api.Stream
    55  }
    56  
    57  type serviceClient_FibSourceDumpClient struct {
    58  	api.Stream
    59  }
    60  
    61  func (c *serviceClient_FibSourceDumpClient) Recv() (*FibSourceDetails, error) {
    62  	msg, err := c.Stream.RecvMsg()
    63  	if err != nil {
    64  		return nil, err
    65  	}
    66  	switch m := msg.(type) {
    67  	case *FibSourceDetails:
    68  		return m, nil
    69  	case *memclnt.ControlPingReply:
    70  		err = c.Stream.Close()
    71  		if err != nil {
    72  			return nil, err
    73  		}
    74  		return nil, io.EOF
    75  	default:
    76  		return nil, fmt.Errorf("unexpected message: %T %v", m, m)
    77  	}
    78  }