From d19bc1905dc0dcd142495db70f9b012b2f26e881 Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Fri, 5 Apr 2019 10:31:02 +0200 Subject: Exposed input_queue_size argument to user Change-Id: If617c61bab4c5ee8ea41ec17932132050bf5cdba Signed-off-by: Ondrej Fabry --- adapter/vppapiclient/vppapiclient.go | 22 +++++++++++++++------- adapter/vppapiclient/vppapiclient_stub.go | 4 ++++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/adapter/vppapiclient/vppapiclient.go b/adapter/vppapiclient/vppapiclient.go index d43c832..cac8c71 100644 --- a/adapter/vppapiclient/vppapiclient.go +++ b/adapter/vppapiclient/vppapiclient.go @@ -54,9 +54,9 @@ govpp_send(uint32_t context, void *data, size_t size) } static int -govpp_connect(char *shm) +govpp_connect(char *shm, int rx_qlen) { - return vac_connect("govpp", shm, govpp_msg_callback, 32); + return vac_connect("govpp", shm, govpp_msg_callback, rx_qlen); } static int @@ -97,14 +97,21 @@ var globalVppClient *vppClient // stubVppClient is the default implementation of the VppAPI. type vppClient struct { - shmPrefix string - msgCallback adapter.MsgCallback + shmPrefix string + msgCallback adapter.MsgCallback + inputQueueSize uint16 } // NewVppClient returns a new VPP binary API client. func NewVppClient(shmPrefix string) adapter.VppAPI { + return NewVppClientWithInputQueueSize(shmPrefix, 32) +} + +// NewVppClientWithInputQueueSize returns a new VPP binary API client with a custom input queue size. +func NewVppClientWithInputQueueSize(shmPrefix string, inputQueueSize uint16) adapter.VppAPI { return &vppClient{ - shmPrefix: shmPrefix, + shmPrefix: shmPrefix, + inputQueueSize: inputQueueSize, } } @@ -114,12 +121,13 @@ func (a *vppClient) Connect() error { return fmt.Errorf("already connected to binary API, disconnect first") } + rxQlen := C.int(a.inputQueueSize) var rc C.int if a.shmPrefix == "" { - rc = C.govpp_connect(nil) + rc = C.govpp_connect(nil, rxQlen) } else { shm := C.CString(a.shmPrefix) - rc = C.govpp_connect(shm) + rc = C.govpp_connect(shm, rxQlen) } if rc != 0 { return fmt.Errorf("connecting to VPP binary API failed (rc=%v)", rc) diff --git a/adapter/vppapiclient/vppapiclient_stub.go b/adapter/vppapiclient/vppapiclient_stub.go index c5566c6..4df051c 100644 --- a/adapter/vppapiclient/vppapiclient_stub.go +++ b/adapter/vppapiclient/vppapiclient_stub.go @@ -28,6 +28,10 @@ func NewVppClient(string) adapter.VppAPI { return &stubVppClient{} } +func NewVppClientWithInputQueueSize(string, uint16) adapter.VppAPI { + return &stubVppClient{} +} + func (a *stubVppClient) Connect() error { return adapter.ErrNotImplemented } -- cgit 1.2.3-korg