X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=binapi%2Faf_packet%2Faf_packet_rpc.ba.go;fp=examples%2Fbinapi%2Faf_packet%2Faf_packet_rpc.ba.go;h=72fea671554f54e2bb7e4014a45a0cbf5a7e5c44;hb=d1f24d37bd447b64e402298bb8eb2479681facf9;hp=d2df47aab3f7e63f98c99bb9342ca6dc31792268;hpb=1548c7e12531e3d055567d761c580a1c7ff0ac40;p=govpp.git diff --git a/examples/binapi/af_packet/af_packet_rpc.ba.go b/binapi/af_packet/af_packet_rpc.ba.go similarity index 52% rename from examples/binapi/af_packet/af_packet_rpc.ba.go rename to binapi/af_packet/af_packet_rpc.ba.go index d2df47a..72fea67 100644 --- a/examples/binapi/af_packet/af_packet_rpc.ba.go +++ b/binapi/af_packet/af_packet_rpc.ba.go @@ -4,81 +4,90 @@ package af_packet import ( "context" - "io" - + "fmt" api "git.fd.io/govpp.git/api" + vpe "git.fd.io/govpp.git/binapi/vpe" + "io" ) -// RPCService represents RPC service API for af_packet module. +// RPCService defines RPC service af_packet. type RPCService interface { - DumpAfPacket(ctx context.Context, in *AfPacketDump) (RPCService_DumpAfPacketClient, error) AfPacketCreate(ctx context.Context, in *AfPacketCreate) (*AfPacketCreateReply, error) AfPacketDelete(ctx context.Context, in *AfPacketDelete) (*AfPacketDeleteReply, error) + AfPacketDump(ctx context.Context, in *AfPacketDump) (RPCService_AfPacketDumpClient, error) AfPacketSetL4CksumOffload(ctx context.Context, in *AfPacketSetL4CksumOffload) (*AfPacketSetL4CksumOffloadReply, error) } type serviceClient struct { - ch api.Channel -} - -func NewServiceClient(ch api.Channel) RPCService { - return &serviceClient{ch} + conn api.Connection } -func (c *serviceClient) DumpAfPacket(ctx context.Context, in *AfPacketDump) (RPCService_DumpAfPacketClient, error) { - stream := c.ch.SendMultiRequest(in) - x := &serviceClient_DumpAfPacketClient{stream} - return x, nil +func NewServiceClient(conn api.Connection) RPCService { + return &serviceClient{conn} } -type RPCService_DumpAfPacketClient interface { - Recv() (*AfPacketDetails, error) -} - -type serviceClient_DumpAfPacketClient struct { - api.MultiRequestCtx +func (c *serviceClient) AfPacketCreate(ctx context.Context, in *AfPacketCreate) (*AfPacketCreateReply, error) { + out := new(AfPacketCreateReply) + err := c.conn.Invoke(ctx, in, out) + if err != nil { + return nil, err + } + return out, nil } -func (c *serviceClient_DumpAfPacketClient) Recv() (*AfPacketDetails, error) { - m := new(AfPacketDetails) - stop, err := c.MultiRequestCtx.ReceiveReply(m) +func (c *serviceClient) AfPacketDelete(ctx context.Context, in *AfPacketDelete) (*AfPacketDeleteReply, error) { + out := new(AfPacketDeleteReply) + err := c.conn.Invoke(ctx, in, out) if err != nil { return nil, err } - if stop { - return nil, io.EOF - } - return m, nil + return out, nil } -func (c *serviceClient) AfPacketCreate(ctx context.Context, in *AfPacketCreate) (*AfPacketCreateReply, error) { - out := new(AfPacketCreateReply) - err := c.ch.SendRequest(in).ReceiveReply(out) +func (c *serviceClient) AfPacketDump(ctx context.Context, in *AfPacketDump) (RPCService_AfPacketDumpClient, error) { + stream, err := c.conn.NewStream(ctx) if err != nil { return nil, err } - return out, nil + x := &serviceClient_AfPacketDumpClient{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 } -func (c *serviceClient) AfPacketDelete(ctx context.Context, in *AfPacketDelete) (*AfPacketDeleteReply, error) { - out := new(AfPacketDeleteReply) - err := c.ch.SendRequest(in).ReceiveReply(out) +type RPCService_AfPacketDumpClient interface { + Recv() (*AfPacketDetails, error) + api.Stream +} + +type serviceClient_AfPacketDumpClient struct { + api.Stream +} + +func (c *serviceClient_AfPacketDumpClient) Recv() (*AfPacketDetails, error) { + msg, err := c.Stream.RecvMsg() if err != nil { return nil, err } - return out, nil + switch m := msg.(type) { + case *AfPacketDetails: + return m, nil + case *vpe.ControlPingReply: + return nil, io.EOF + default: + return nil, fmt.Errorf("unexpected message: %T %v", m, m) + } } func (c *serviceClient) AfPacketSetL4CksumOffload(ctx context.Context, in *AfPacketSetL4CksumOffload) (*AfPacketSetL4CksumOffloadReply, error) { out := new(AfPacketSetL4CksumOffloadReply) - 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