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

     1  // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
     2  
     3  package gre
     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 gre.
    15  type RPCService interface {
    16  	GreTunnelAddDel(ctx context.Context, in *GreTunnelAddDel) (*GreTunnelAddDelReply, error)
    17  	GreTunnelDump(ctx context.Context, in *GreTunnelDump) (RPCService_GreTunnelDumpClient, 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) GreTunnelAddDel(ctx context.Context, in *GreTunnelAddDel) (*GreTunnelAddDelReply, error) {
    29  	out := new(GreTunnelAddDelReply)
    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) GreTunnelDump(ctx context.Context, in *GreTunnelDump) (RPCService_GreTunnelDumpClient, error) {
    38  	stream, err := c.conn.NewStream(ctx)
    39  	if err != nil {
    40  		return nil, err
    41  	}
    42  	x := &serviceClient_GreTunnelDumpClient{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_GreTunnelDumpClient interface {
    53  	Recv() (*GreTunnelDetails, error)
    54  	api.Stream
    55  }
    56  
    57  type serviceClient_GreTunnelDumpClient struct {
    58  	api.Stream
    59  }
    60  
    61  func (c *serviceClient_GreTunnelDumpClient) Recv() (*GreTunnelDetails, error) {
    62  	msg, err := c.Stream.RecvMsg()
    63  	if err != nil {
    64  		return nil, err
    65  	}
    66  	switch m := msg.(type) {
    67  	case *GreTunnelDetails:
    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  }