go.ligato.io/vpp-agent/v3@v3.5.0/plugins/vpp/binapi/vpp2106/stn/stn_rpc.ba.go (about)

     1  // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
     2  
     3  package stn
     4  
     5  import (
     6  	"context"
     7  	"fmt"
     8  	"io"
     9  
    10  	api "go.fd.io/govpp/api"
    11  	vpe "go.ligato.io/vpp-agent/v3/plugins/vpp/binapi/vpp2106/vpe"
    12  )
    13  
    14  // RPCService defines RPC service stn.
    15  type RPCService interface {
    16  	StnAddDelRule(ctx context.Context, in *StnAddDelRule) (*StnAddDelRuleReply, error)
    17  	StnRulesDump(ctx context.Context, in *StnRulesDump) (RPCService_StnRulesDumpClient, 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) StnAddDelRule(ctx context.Context, in *StnAddDelRule) (*StnAddDelRuleReply, error) {
    29  	out := new(StnAddDelRuleReply)
    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) StnRulesDump(ctx context.Context, in *StnRulesDump) (RPCService_StnRulesDumpClient, error) {
    38  	stream, err := c.conn.NewStream(ctx)
    39  	if err != nil {
    40  		return nil, err
    41  	}
    42  	x := &serviceClient_StnRulesDumpClient{stream}
    43  	if err := x.Stream.SendMsg(in); err != nil {
    44  		return nil, err
    45  	}
    46  	if err = x.Stream.SendMsg(&vpe.ControlPing{}); err != nil {
    47  		return nil, err
    48  	}
    49  	return x, nil
    50  }
    51  
    52  type RPCService_StnRulesDumpClient interface {
    53  	Recv() (*StnRulesDetails, error)
    54  	api.Stream
    55  }
    56  
    57  type serviceClient_StnRulesDumpClient struct {
    58  	api.Stream
    59  }
    60  
    61  func (c *serviceClient_StnRulesDumpClient) Recv() (*StnRulesDetails, error) {
    62  	msg, err := c.Stream.RecvMsg()
    63  	if err != nil {
    64  		return nil, err
    65  	}
    66  	switch m := msg.(type) {
    67  	case *StnRulesDetails:
    68  		return m, nil
    69  	case *vpe.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  }