Exposed input_queue_size argument to user 98/18698/1
authorOndrej Fabry <ofabry@cisco.com>
Fri, 5 Apr 2019 08:31:02 +0000 (10:31 +0200)
committerOndrej Fabry <ofabry@cisco.com>
Fri, 5 Apr 2019 08:31:02 +0000 (10:31 +0200)
Change-Id: If617c61bab4c5ee8ea41ec17932132050bf5cdba
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
adapter/vppapiclient/vppapiclient.go
adapter/vppapiclient/vppapiclient_stub.go

index d43c832..cac8c71 100644 (file)
@@ -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)
index c5566c6..4df051c 100644 (file)
@@ -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
 }