python clients can set the API rx message queue length 85/4585/2
authorDave Barach <dave@barachs.net>
Fri, 6 Jan 2017 21:33:06 +0000 (16:33 -0500)
committerOle Trøan <otroan@employees.org>
Fri, 6 Jan 2017 22:55:02 +0000 (22:55 +0000)
Change-Id: I7af1493a823747e0f7389ad6c2093e4cec6c2ce9
Signed-off-by: Dave Barach <dave@barachs.net>
src/vpp-api/python/pneum/pneum.c
src/vpp-api/python/pneum/pneum.h
src/vpp-api/python/pneum/test_pneum.c
src/vpp-api/python/vpp_papi/pneum_wrap.c
src/vpp-api/python/vpp_papi/vpp_papi.py

index b805f04..37c8d8f 100644 (file)
@@ -126,7 +126,8 @@ pneum_msg_table_size(void)
 }
 
 int
-pneum_connect (char * name, char * chroot_prefix, pneum_callback_t cb)
+pneum_connect (char * name, char * chroot_prefix, pneum_callback_t cb, 
+               int rx_qlen)
 {
   int rv = 0;
   pneum_main_t *pm = &pneum_main;
@@ -139,7 +140,7 @@ pneum_connect (char * name, char * chroot_prefix, pneum_callback_t cb)
     return rv;
   }
 
-  if (vl_client_connect(name, 0, 32) < 0) {
+  if (vl_client_connect(name, 0, rx_qlen) < 0) {
     vl_client_api_unmap();
     return (-1);
   }
index a347bd2..9312eb4 100644 (file)
@@ -19,7 +19,8 @@
 #include <vppinfra/types.h>
 
 typedef void (*pneum_callback_t)(unsigned char * data, int len);
-int pneum_connect(char * name, char * chroot_prefix, pneum_callback_t cb);
+int pneum_connect(char * name, char * chroot_prefix, pneum_callback_t cb,
+    int rx_qlen);
 int pneum_disconnect(void);
 int pneum_read(char **data, int *l);
 int pneum_write(char *data, int len);
index 0d55b8a..334e58e 100644 (file)
@@ -80,7 +80,7 @@ int main (int argc, char ** argv)
   vl_api_show_version_t message;
   vl_api_show_version_t *mp;
   int async = 1;
-  int rv = pneum_connect("pneum_client", NULL, NULL);
+  int rv = pneum_connect("pneum_client", NULL, NULL, 32 /* rx queue-length*/);
 
   if (rv != 0) {
     printf("Connect failed: %d\n", rv);
index 5763707..748b967 100644 (file)
@@ -45,12 +45,13 @@ static PyObject *
 wrap_connect (PyObject *self, PyObject *args)
 {
   char * name, * chroot_prefix = NULL;
+  int rx_qlen=32; /* default rx queue length */
   int rv;
   PyObject * temp = NULL;
   pneum_callback_t cb = NULL;
 
-  if (!PyArg_ParseTuple(args, "s|Os:wrap_connect",
-                       &name, &temp, &chroot_prefix))
+  if (!PyArg_ParseTuple(args, "s|Ois:wrap_connect",
+                       &name, &temp, &rx_qlen, &chroot_prefix))
     return (NULL);
 
   if (temp)
@@ -67,7 +68,7 @@ wrap_connect (PyObject *self, PyObject *args)
       cb = wrap_pneum_callback;
     }
   Py_BEGIN_ALLOW_THREADS
-    rv = pneum_connect(name, chroot_prefix, cb);
+  rv = pneum_connect(name, chroot_prefix, cb, rx_qlen);
   Py_END_ALLOW_THREADS
   return PyLong_FromLong(rv);
 }
index 6b6b79f..4577472 100644 (file)
@@ -303,12 +303,12 @@ class VPP():
             self.vpp_dictionary[name] = { 'id' : i, 'crc' : crc }
             self.vpp_dictionary_maxid = max(self.vpp_dictionary_maxid, i)
 
-    def connect(self, name, chroot_prefix = None, async = False):
+    def connect(self, name, chroot_prefix = None, async = False, rx_qlen = 32):
         msg_handler = self.msg_handler if not async else self.msg_handler_async
         if not chroot_prefix:
-            rv = vpp_api.connect(name, msg_handler)
+            rv = vpp_api.connect(name, msg_handler, rx_qlen)
         else:
-            rv = vpp_api.connect(name, msg_handler, chroot_prefix)
+            rv = vpp_api.connect(name, msg_handler, rx_qlen, chroot_prefix)
 
         if rv != 0:
             raise IOError(2, 'Connect failed')